SQLにおける集計とグループ化
メニューを表示するにはスワイプしてください
SQL 集約は、GROUP BY 句を使用して生データを集計行に整理。SUM()、AVG()、COUNT() などの関数を利用することで、数百万行のデータを SQL セル内で直接ビジネス指標に変換。
多くの場合、SQL はデータを要約するための最も自然な言語。構文は非常に読みやすく、論理的な流れに従う:カテゴリの選択、計算方法の指定、グループの定義。本章では、以前作成した一時ビューを使用し、Python で行ったのと同じ集約処理を SQL のシンプルさで実施。
GROUP BY 句
SQL では、「数学的に集約」されていないすべての列を、クエリの最後にある GROUP BY 文に含める必要。これにより、SQL エンジンがデータの分割方法を正確に認識。
SELECT cut, COUNT(*)
FROM diamond_view
GROUP BY cut
組み込み集計関数の利用
SQL では、数値列に対して計算を行うための標準関数がいくつか用意されています:
- SUM(): 列内のすべての値の合計
- AVG(): 平均値の計算
- MIN() / MAX(): 最小値または最大値の取得
- COUNT(): 行数の取得
%sql
SELECT
cut,
SUM(x),
AVG(y)
FROM diamond_view
GROUP BY cut
プロフェッショナルなレポートのためのエイリアス設定
デフォルトでは、SQLは結果の列名を sum(Total_Profit) のように表示します。ビジネスダッシュボード向けに出力をより分かりやすくするには、AS キーワードを使って列名を説明的なものに変更します。
%sql
SELECT
cut,
SUM(x) AS Total_Length,
MAX(y) AS Highest_Diamond_Value
FROM diamond_view
GROUP BY cut
集計データのフィルタリング:HAVING句
よくある間違いとして、集計結果を WHERE でフィルタしようとすることがあります。SQLでは、WHERE はグループ化前の個々の行をフィルタします。合計後の結果(例:利益が1,000,000ドルを超える地域のみ表示したい場合)をフィルタしたい場合は、HAVING 句を使用する必要があります。
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
HAVING Total_Length > 4000
集計結果の並べ替え
分析結果を際立たせるためには、常に ORDER BY を使用。これにより、最も利益の高い地域などをテーブルの上位に表示することが可能。
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
ORDER BY Total_Length DESC
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください