組み込み集約 2
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 35/72。
場合によっては、各行を集計値と比較するなど、より複雑な方法で集約関数を使う必要があります。そんなときに役立つのが、ネストされたクエリです。
個々の行と集計値を組み合わせた計算を行いたい場合は、ネストされたクエリを使用する必要があります。その理由は次のとおりです。
これは、必要な行ごとの結果を返しません。
SELECT value + MIN(value)
FROM table1その理由は、集約関数が列全体に対して動作する一方で、'value' 参照は行ごとに動作しようとしているためです。これを解決するために、ネストされたクエリを使用します。
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1これは、ネストされたクエリ (SELECT MIN(value) FROM table1) が最初に実行されて単一の値を返し、その値をメインクエリで各行に対して使用できるために機能します。
ネストされた集計関数の一般的な使用例:
1. 各値を平均と比較する
2. 合計に対する割合の計算
3. 最大値または最小値との差を見つける
チャレンジ
簡単利用可能なテーブルと列:
items:id、price
各商品の価格が全商品の平均価格をどれだけ上回っているかを計算してください。商品のID、価格、平均価格との差を表示します。差の列名は diff_from_avg としてください。
結果を差の降順で並べ替えてください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド