集計関数とは?
SQLの集計関数とは、大量のデータをまとめて処理し、一つの値に集約するための関数です。例えば、売上データの合計額を求めたり、商品の平均価格を計算したりといった場合に利用されます。
代表的な集計関数
- COUNT関数: データの件数を数えます。
- SUM関数: 数値型のデータの合計を計算します。
- AVG関数: 数値型のデータの平均値を計算します。
- MAX関数: 数値型または文字列型のデータの最大値を返します。
- MIN関数: 数値型または文字列型のデータの最小値を返します。
COUNT関数
COUNT(*)で全ての行数を数える
最もシンプルな使い方として、COUNT(*)は、指定したテーブルの全ての行数を数えます。
SELECT COUNT(*) FROM customers;
このクエリは、customersテーブルにある全ての顧客の数を数えます。
特定のカラムの値を数える
COUNT(カラム名)とすることで、指定したカラムのNULL値を除いた行数を数えることができます。
SELECT COUNT(order_id) FROM orders;
このクエリは、ordersテーブルのorder_idカラムに値が入力されている注文の数を数えます。NULL値の注文はカウントされません。
SUM関数
SUM(カラム名)で、指定したカラムの合計を計算することができます。
SELECT SUM(price) FROM products;
このクエリは、productsテーブルの全ての商品の価格の合計を計算します。
AVG関数
AVG(カラム名)で、指定したカラムの平均値を計算することができます。
SELECT AVG(price) FROM products;
このクエリは、productsテーブルの全ての商品の価格の平均値を計算します。
MAX関数
MAX(カラム名)で、指定したカラムの最大値を取得することができます。
SELECT MAX(price) FROM products;
このクエリは、productsテーブルの全ての商品の価格の最大値(最高価格)を計算します。
MIN関数
MIN(カラム名)で、指定したカラムの最小値を取得することができます。
SELECT MIN(salary) FROM employees;
このクエリは、employeesテーブルの全ての社員の給与の最小値(最低給与)を計算します。
グループ化して集計関数を使う
GROUP BY句
集計関数は、GROUP BY句と組み合わせることで、より強力な分析が可能になります。GROUP BY句は、データを特定のカラムの値でグループ化し、各グループに対して集計関数を適用します。
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
このSQL文は、employeesテーブルのデータを部署(department)ごとにグループ化し、各部署の社員数をカウントします。
HAVING句
GROUP BY句でグループ化した結果に対して、さらに条件を付けたい場合はHAVING句を使います。
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
このSQL文は、employeesテーブルのデータを部署ごとにグループ化し、平均年俸が50000円を超える部署とその平均年俸を表示します。
集計関数の活用例
- 売上データ: 月ごとの売上合計、商品ごとの売上ランキング
- 顧客データ: 顧客ごとの購入回数、顧客セグメントごとの平均年齢
- 在庫データ: 商品ごとの在庫数、品切れ商品数
まとめ
SQLの集計関数は、大量のデータを効率的に分析するために欠かせないツールです。GROUP BY句やHAVING句と組み合わせることで、より複雑な集計処理を行うことができます。
さらに詳しく学びたい方へ
- ウィンドウ関数: 行ごとの計算を行うことができます。
- サブクエリ: SELECT文の中に別のSELECT文を組み込むことで、より複雑な検索を行うことができます。
練習問題
- 「products」という商品テーブルがあり、”product_name”(商品名)、”category”(カテゴリー)、”price”(価格)というカラムがあるとします。
- 各カテゴリーの商品数を表示してください。
- 価格が1000円以上の商品の平均価格を表示してください。
- 各カテゴリーで最も高い価格の商品名と価格を表示してください。
コメント