[SQLのはじめ方] Part9: COUNT, SUM, AVG, MIN, MAX の使い方

はじめに:データを要約する強力なツール

SQLの基本操作に慣れてきた皆さん、こんにちは! これまでのステップでは、テーブルから特定のデータを取り出したり、並び替えたりする方法を学びましたね。

今回は、データの集まりを要約するための強力なツール、集計関数について学びます。集計関数を使うと、テーブル全体の行数、特定列の合計値や平均値、最大値、最小値などを簡単に計算できます。これらはデータ分析の第一歩として非常に重要です。

このステップで学ぶ主な集計関数は次の5つです。

  • COUNT: 行数を数える
  • SUM: 合計値を計算する
  • AVG: 平均値を計算する
  • MIN: 最小値を見つける
  • MAX: 最大値を見つける

さっそく、それぞれの使い方を見ていきましょう!

COUNT: 行数を数える

COUNT関数は、条件に一致する行の数を数えるために使います。最もよく使われる集計関数の一つです。

COUNTには主に2つの使い方があります。

COUNT(*)は、テーブルに含まれる全ての行数を返します。NULL値を含む行もカウントされます。

例: `products`テーブルの全商品数を数える

SELECT COUNT(*) FROM products;

このクエリは、`products`テーブルに存在するレコードの総数を返します。

COUNT(列名)は、指定した列の値がNULLでない行の数を返します。特定の列にデータが入力されているかを確認したい場合に便利です。

例: `products`テーブルで価格(price)が設定されている商品数を数える

SELECT COUNT(price) FROM products;

もしprice列にNULL値が含まれていれば、その行はカウントされません。

ポイント: COUNT(*)COUNT(列名)の結果は、指定した列にNULL値が含まれている場合に異なることがあります。

SUM: 合計を求める

SUM関数は、指定した列の数値の合計値を計算します。数値型の列に対してのみ使用できます。

例: `products`テーブルの全商品の在庫数(stock_quantity)の合計を計算する

SELECT SUM(stock_quantity) FROM products;

このクエリは、`stock_quantity`列にある全ての数値を足し合わせた結果を返します。NULL値はこの計算から除外されます。

AVG: 平均を計算する

AVG関数は、指定した列の数値の平均値を計算します。これも数値型の列に対して使用します。

例: `products`テーブルの商品の平均価格(price)を計算する

SELECT AVG(price) FROM products;

このクエリは、price列の合計値を、NULLでない値を持つ行数で割った結果を返します。SUM(列名) / COUNT(列名) と同じ計算になります。NULL値は計算に含まれません。

MIN: 最小値を見つける

MIN関数は、指定した列の中で最も小さい値を見つけます。数値だけでなく、文字列や日付/時刻型の列にも使用できます(文字列の場合は辞書順、日付/時刻の場合は最も古いもの)。

例: `products`テーブルで最も安い商品の価格(price)を見つける

SELECT MIN(price) FROM products;

このクエリは、price列の中で最も小さい数値を返します。NULL値は無視されます。

MAX: 最大値を見つける

MAX関数は、MIN関数の逆で、指定した列の中で最も大きい値を見つけます。これも数値、文字列、日付/時刻型の列に使用できます。

例: `products`テーブルで最も高い商品の価格(price)を見つける

SELECT MAX(price) FROM products;

このクエリは、price列の中で最も大きい数値を返します。NULL値は無視されます。

集計関数の注意点:NULLの扱い

集計関数を使う上で重要な注意点があります。それはNULL値の扱いです。

  • COUNT(*) を除くほとんどの集計関数 (COUNT(列名), SUM, AVG, MIN, MAX) は、計算の対象となる列の値が NULL である行を無視します。
  • 例えば、AVG(price) を計算する場合、priceNULL の商品は計算に含まれません。合計値を求める際も、NULL の行数で割る際も、NULL 値を持つ行は考慮されません。
  • もし、NULL を 0 として扱いたい場合は、COALESCE関数などを使ってNULLを特定の値に変換する必要がありますが、これは少し高度なテクニックになります。(今後のステップで触れる可能性があります)

このNULLの扱いは、特にAVG関数やCOUNT(列名)を使う際に意図した結果と異なる場合があるので、しっかり覚えておきましょう。

まとめ

今回は、SQLでデータを要約するための基本的な集計関数 COUNT, SUM, AVG, MIN, MAX の使い方を学びました。

関数 説明 対象列の型 NULLの扱い
COUNT(*) テーブル全体の行数を数える NULLを含む全ての行を数える
COUNT(列名) 指定列でNULLでない行数を数える 任意 NULLを無視する
SUM(列名) 指定列の合計値を計算する 数値 NULLを無視する
AVG(列名) 指定列の平均値を計算する 数値 NULLを無視する
MIN(列名) 指定列の最小値を見つける 数値, 文字列, 日付/時刻など NULLを無視する
MAX(列名) 指定列の最大値を見つける 数値, 文字列, 日付/時刻など NULLを無視する

これらの関数を使うことで、大量のデータから瞬時に有用な情報を引き出すことができます。しっかり使い方をマスターしましょう!

次のステップでは、これらの集計関数をさらに応用し、特定のグループごとに集計を行うための GROUP BY 句と、集計結果に対して条件を指定する HAVING 句について学びます。お楽しみに!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です