Menu
Coddy logo textTech

Built-In Aggregate Part 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. 最大値または最小値からの差を求める

challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>items</strong>: <strong>id</strong>, <strong>price</strong>

各アイテムの価格が、全アイテムの平均価格をどれだけ上回っているかを計算してください。アイテムのID、価格、および平均との差を表示してください。差の列の名前を diff_from_avg としてください。

結果を差の降順で並べ替えてください。

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン