SQL集約関数の理解
Emily Parker
Product Engineer · Leapcell

Key Takeaways
- SQLの集約関数は、簡単なコマンドを使用して大規模なデータセットを要約します。
GROUP BY
とHAVING
は、集約分析を強化します。- 集約関数は通常、NULL値を無視します。
はじめに
SQLの集約関数は、一連の値を処理し、単一の要約された結果を返します。これらは、リレーショナルデータベースでデータを分析および要約するための不可欠なツールです。
一般的な集約関数
1. COUNT()
-
定義: 行の数を返します。
-
バリアント:
COUNT(*)
: NULLを含むすべての行。COUNT(column)
: NULL以外の値のみ。COUNT(DISTINCT column)
: 一意のNULL以外のエントリの数。
-
例:
SELECT COUNT(*) AS TotalOrders FROM Orders;
2. SUM()
-
定義: 数値の合計を計算します。
-
NULLの扱い: 無視します。
-
例:
SELECT SUM(amount) AS TotalRevenue FROM Sales;
3. AVG()
-
定義: 数値の平均(平均値)を計算します。
-
計算: NULL以外の
SUM / COUNT
。 -
例:
SELECT AVG(salary) AS AvgSalary FROM Employees;
4. MIN()
と MAX()
-
定義:
MIN()
: 列の最小値。MAX()
: 列の最大値。
-
例:
SELECT MIN(salary) AS LowestSalary, MAX(salary) AS HighestSalary FROM Employees;
GROUP BY
を使用した作業
集約関数は、GROUP BY
と組み合わせると最も強力です。GROUP BY
は、関数を適用する前に、1つまたは複数の列に基づいて行をグループ化します。
例: 製品と場所ごとのユニットの合計
SELECT product, location, SUM(units) AS total_units FROM Sales GROUP BY product, location;
HAVING
を使用したフィルタリング
HAVING
句は、集約結果に基づいてグループをフィルタリングします(集約前に行をフィルタリングするWHERE
とは異なります)。
例: 平均給与が600を超える部門
SELECT department, AVG(salary) AS avg_salary FROM Employees GROUP BY department HAVING AVG(salary) > 600;
NULLの処理
COUNT(*)
を除き、集約関数はデフォルトでNULL値を無視します。これにより、要約が欠落データによって歪められないようにします。
拡張された集約関数
多くのRDBMSは、次のようなより高度なオプションをサポートしています。
VARIANCE()
,STDDEV()
– 統計的指標GROUPING_ID()
,LISTAGG()
,STRING_AGG()
– グルーピングメタデータまたは文字列の連結- 既存のすべての集約は、ウィンドウ関数のための
OVER()
句をサポートします
ユースケースの例
Orders
テーブルを想定します:
SELECT customer, COUNT(*) AS order_count, SUM(total_amount) AS total_spent, AVG(total_amount) AS avg_order_value, MIN(total_amount) AS min_order, MAX(total_amount) AS max_order FROM Orders GROUP BY customer HAVING SUM(total_amount) > 1000;
このクエリは、顧客ごとの主要なメトリックを要約し、合計支出が1,000を超える顧客のみを表示するようにフィルタリングします。
結論
集約関数(COUNT
、SUM
、AVG
、MIN
、MAX
など)は、大規模なデータセットを要約するためのSQLの基礎です。GROUP BY
と組み合わせてHAVING
を使用してフィルタリングすると、合計、平均、極値、カウントなどの重要な分析の質問に答えることができます。
FAQs
複数の行から要約されたデータを返す関数です。
行をグループ化して、各グループの集約が計算されるようにします。
COUNT(*)を除き、ほとんどの集約関数はNULL値を無視します。
Leapcellは、バックエンドプロジェクトをホストするための最良の選択肢です。
Leapcellは、Webホスティング、非同期タスク、およびRedis向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、または Rust で開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ料金を支払います — リクエストも料金もかかりません。
比類のないコスト効率
- アイドル料金なしの従量課金制。
- 例:25ドルで、平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOpsの統合。
- 実用的な洞察を得るためのリアルタイムメトリックとロギング。
簡単なスケーラビリティとハイパフォーマンス
- 高い並行処理を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ — 構築に集中するだけです。
詳細については、ドキュメントをご覧ください。
Xでフォローしてください:@LeapcellHQ