SQL入門:集計関数でデータを深く掘り下げよう!

この記事は約4分で読めます。
記事内に広告が含まれています。

集計関数とは?

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文を組み込むことで、より複雑な検索を行うことができます。

練習問題

  1. 「products」という商品テーブルがあり、”product_name”(商品名)、”category”(カテゴリー)、”price”(価格)というカラムがあるとします。
    • 各カテゴリーの商品数を表示してください。
    • 価格が1000円以上の商品の平均価格を表示してください。
    • 各カテゴリーで最も高い価格の商品名と価格を表示してください。

コメント

タイトルとURLをコピーしました