Grouping Part 2
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 37/72。
WHERE キーワードは、各レコードに対して個別に条件を実行します。例えば:
SELECT * FROM table1
WHERE col1 > col2col1 > col2 はすべてのレコードで実行され、それが満たされているかをチェックします。
しかし、集計結果をフィルタリングしたい場合はどうでしょうか? たとえば:
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryこれは動作しません なぜなら WHERE は集計をチェックできないからです。そのために、HAVING キーワードがあります。それは集計条件でデータをフィルタリングします。
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40これにより、平均価格が 40 を超えるすべてのカテゴリをフィルタリングします。
HAVING と WHERE 句を組み合わせたい場合、以下のように記述します:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40これはまずレコードごとに処理し、価格が 25 より大きいすべてのレコードをフィルタリングしてから、GROUP BY 句を実行し、平均価格が 40 より大きいすべてのカテゴリをフィルタリングします。
チャレンジ
中級利用可能なテーブルと列:
<strong>earthquakes</strong>:<strong>location</strong>,<strong>amplitude</strong>,<strong>period</strong>
リヒター・スケールは、地震のマグニチュードを測定するために使用される対数スケールです。
すべての主要地震の各場所の平均マグニチュードを返します。
主要地震は次のように定義されます:
- 振幅が 1 以上
- 波の周期が 1 分以上
このチャレンジでは、異なる式を使用します:M = (A/T)<sup>2</sup> / T。これはM = ((A/T)*(A/T)) / Tと同等です。
主要地震のみを含めて、各場所の場所と平均マグニチュードを返します(列名をavg_magnitudeとします)。結果にはavg_magnitudeが 1 より大きい場所のみを含めます。
結果を小数点以下 2 桁に丸めます。
チートシート
WHERE キーワードは個々のレコードをフィルタリングし、HAVING はグループ化後の集計結果をフィルタリングします:
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40両方の句を組み合わせるには:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40WHERE が最初にレコードをフィルタリングし、次に GROUP BY が残りのデータをグループ化し、最後に HAVING がグループ化された結果をフィルタリングします。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
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