問題タブ [aggregate-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 集計関数 - GROUP BY 句に含まれていない列を取得する
3 つのフィールド (item_id、source、および price) を持つテーブルがあります。(item_id、source、および price) が一緒になって主キーを構成します。
item_id ごとに、それを入手するのに最も安い場所と、その場所で支払う価格を知りたいです。上記の例について、次の出力を確認したいと思います。
テーブル名を2回言及せずにこれを行う簡単な方法はありますか? MySQL を使用しているため、WITH 句を使用できません。
別のユーザーの質問 ( Group related records, but pick specific fields from only the first record ) で結合された 2 つのクエリ ソリューションを見てきましたが、テーブルについて 2 回言及することは本当に避けたいと思います。問題は、この質問の単純なテーブルが、実際の問題では、使用ごとに作成するのに約 5 秒かかるインライン ビューを実際に表していることです。そのため、代替案を見つけたいと考えています。
sql - MySQL のトリガー内で集計関数を使用する
「年齢」を含むいくつかの属性を持つ「人」テーブルがあります。このテーブルに新しいタプルを挿入するたびに、テーブルにリストされているすべての人の平均年齢を調べたいと思います。平均が 50 を超える場合は、挿入されるタプルの年齢を変更したいと考えています。これには「BEFORE INSERT」トリガーを使用しています。これが私が現在持っているテストコードです(「区切り文字」行は無視できます):
私は何を間違っていますか?
mysql - MYSQL は 10 の投稿をフェッチします。それぞれに投票数が含まれ、投票数でソートされ、投稿の where 句で制限されます
投票数がリストされ、投票数でソートされた一連の投稿を取得したい (例)
私は2つのテーブルを持っています:
投稿- 列 - id
, body
,is_hidden
投票- 列 - id
, post_id
,vote_type_id
私が試したクエリは次のとおりです。
正しさ:上記のクエリはほとんど機能します。subselect にはその haveが含まvotes
れているため、 join を に残しておくと、非表示の投稿が上位 10 位 (投票でランク付け) にある場合、フィールドに NULL を持つレコードが表示される可能性があります。posts
is_hidden = 1
posts
yes_count
パフォーマンス: ~50k の投稿と ~500k の投票があります。私の開発マシンでは、上記のクエリは .4 秒で実行されています。この実行時間以下にとどまりたいです。
インデックス:フィールドをカバーする投票テーブルにインデックスがありますvote_type_id
:post_id
説明
max - 「GROUP BY句」エラーのヘルプ
このエラー「列 'Sales.No_' は、集計関数または GROUP BY 句のいずれにも含まれていないため、選択リストでは無効です。」... このエラーを理解するのに数日を費やしましたが、失敗しました:(私のクエリ:-
sql - グループ化された結果セット内のすべての単一列を1つのクエリに集約します:それは可能ですか?
現在、次のMySQLクエリがあります。
これは次を返します:
上記のクエリで見つかったすべてのentity_idのコンマ区切りの集計を示す列を含めて、上記を返したいと思います。
これは同じクエリで可能ですか?もしそうなら、どのように?例:
mysql - MySql Sql MAX および SUM エラー
エラー: グループ関数の無効な使用 (エラー番号 1111)
何か案が?
ありがとう。
sql - MySQL の問題: nm が原因で複数の結果/行をマージする
私は今、次の問題を解決するためにできることのほとんどすべてを試しました。これまでのところ成功していません。しかし、ケースが特別すぎるとは思わないので、解決策があるに違いありません。私はただの初心者だと思います;-)ユニオンマージなどに参加する必要があります;-) MySQLで次の問題を解決します...
CASE: 3 つのテーブル "posts"、"tagmap"、"tags"
tagmapテーブルには、すべての nm リレーション、投稿の ID とタグ
の
IDが格納されます タグテーブルには、タグIDとともにtag_nameが格納されます
私が達成しようとしているのは、関連するすべてのタグが1つの列にマージされる次のような結果を得ることです。カンマ区切りのリストまたはスペース:
post_id => 1, post_title => Charlie Chaplin... tag_name => Acryl, Chalk, Poster
しかし、これまでのところ、次のような複数の結果しか得られませんでした:
post_id => 1, post_title => Charlie Chaplin... tag_name => Acryl
post_id => 1, post_title => Charlie Chaplin... tag_name => Chalk
post_id => 1, post_title => チャーリー・チャップリン... tag_name => ポスター
誰もこれを達成する方法を知っていますか...どんな助けでも大歓迎です.これで私を助けることができるすべての人に事前に感謝します;-)
sql - MIN を実行してから GROUP BY を実行すると、ID 値が失われます。なんで?
簡単にするために、「employee」というテーブルがあるとします。
各部門の最低給与を取得する場所を実行してクエリを実行したいと考えています。だから私のクエリは次のようなものです:
ただし、どのレコードが見つかったかに関係なく。結果セットの ID 値は 1,2,3... に名前が変更されます。結果セットに存在するレコード (部門) の数に制限はありません。
AGGREGATE 関数を実行した後、従業員の実際の ID を維持するにはどうすればよいGROUP BY
ですか?
sql - SQLite3 は、不正な/不確定なクエリで集計エラーを生成しませんか?
SQLite は、集計を処理するとき、他の多くの RDBMS とは異なる動作をします。次の表と値を考慮してください。
このようにクエリすると:
通常、GROUP BY 句に列 'a' を含めていないため、エラーが発生することが予想されます。以下は、SQL Server によって生成されたエラーです (PostgreSQL は同様のものを出力します)。
一方、SQLite はそれに従って、次の結果を生成します。
これでいいの?列「a」の値はどのように選択されましたか? 別の行を追加すると、何を選択しているのかにパターンがあるように見えます。おそらく、最近追加された行を使用していると暫定的に言うことができますが、単に不確定である可能性があります.
これは私にはバグのように思えますが、ここにいるデータベースの専門家がそれについて何と言っているか疑問に思っています.
(Ubuntu で SQLite バージョン 3.6.16 を使用しています。)
sql - データの名前を変更してから、重複を削除します
私は大きなデータセットを持っていますが、その一部は重複レコードであり、2つのフィールドの重複によって識別できます。
これらのレコードを見つけるには、次のクエリが機能します。
基本的に私がやりたいのは、「Description」のすべての値をまとめて1つの行を形成し、複製されたすべての行を1つの行に置き換えることです。
これはこれまでの私の半分壊れたクエリです、それは不器用で恐ろしいです。私の主な目標はこれを機能させることですが、SQLでいくつかの新しいトリックを学んだとしても、それはまったく悪いことではありません。
これは私が得た限りです。もう少し先に進むために何を読むべきですか?私はこのトピックに関する数冊の本とたくさんのウェブページを読みました。ただし、この場合、私の問題はSQLの欠如だけではなく(それが私の唯一の問題ではありません)、問題に間違った方法でアプローチしていることだと思います。
編集1:
^^は私がvvから作成したいものです
^^複数の説明行がない行は、そのままにしておく必要があることに注意してください。
これまでに、次の新しいテーブルに新しいレコードを作成しました。
したがって、残っているのは、catコマンドによってキャッチされたレコードを削除することだけです。DELETE FROM
私は持っている節でできないようですか?私はそれDELETE FROM table WHERE oid IN (SELECT OID's using having clause)
がうまくいくと思っていますか?
編集2:
2つのOIDの配列をいくつか返しますが、これらはすべて削除する必要があります。私はとても近くにいると感じていますが、それでも今のところです。前もって感謝します