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. 最大値または最小値からの差の求め方
チャレンジ
簡単利用可能なテーブルと列:
<strong>items</strong>:<strong>id</strong>,<strong>price</strong>
各アイテムの価格が全アイテムの平均価格をどのくらい上回っているかを計算します。アイテム ID、その価格、および平均からの差を表示します。差の列を diff_from_avg と名付けます。
結果を差によって降順で並べ替えます。
チートシート
個別の行を集計値と組み合わせる場合、ネストされたクエリを使用してください。集計関数は全体の列で動作するのに対し、通常の列は行ごとに動作するためです。
これは動作しません:
SELECT value + MIN(value)
FROM table1代わりにネストされたクエリを使用してください:
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1ネストされたクエリが最初に実行され、各行でメインクエリで使用できる単一の値を返します。
一般的な使用例:
- 各値を平均と比較する
- 合計に対するパーセンテージを計算する
- 最大値または最小値からの差分を見つける
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns