【SQL】集約関数の使い方を解説する!

Web技術
スポンサーリンク

テーブルの列の合計値や平均値ってどうやって出すの?

集約関数ってなに?

わかりやすく教えて欲しい!

こういった疑問にこたえます。

この記事を読めば
  • テーブルの列の合計や平均値を出すことができるようになる
  • COUNT、SUM、AVG、MAX、MINなど集約関数が使えるようになる

エンジニアの僕がわかりやすく解説します。

集約関数

SQLでデータに対して何か操作や計算をおこなうには関数を使います。

例えば、テーブル全体の行数を数えたい場合はCOUNT関数を使います。

よく使う関数は次の5つです。とりあえずこの5つは覚えておきましょう。

  • COUNT
    テーブルのレコード数(行数)を数える
  • SUM
    テーブルの数値列のデータを合計する
  • AVG
    テーブルの数値列のデータを平均する
  • MAX
    テーブルの任意の列のデータの最大値を求める
  • MIN
    テーブルの任意の列のデータの最小値を求める

このような集計用の関数を「集約関数」と呼びます。

集約とは複数行を1行にまとめるという意味です。

このようなテーブルを例に解説していきます。

shohin_idshohin_meishohin_bunruikakaku
‘0001’‘鉛筆’‘事務用品’100
‘0002’‘ボールペン’‘事務用品’100
‘0003’‘Tシャツ’‘衣類’1000
‘0004’‘鍋’‘キッチン用品’2000
‘0005‘包丁’‘キッチン用品’1500
‘0006’‘帽子’‘衣類’NULL
商品テーブル

テーブルの行数を数える(COUNT関数)

行数を数えるにはCOUNT関数を使います。

SELECT COUNT(*) FROM shohin;

実行結果

 count 
-------
     6

引数の「*」はテーブル全行を数えたいときに使います。

逆に、NULLを数えたくない場合は列名を指定して、カウントします。

SELECT COUNT(kakaku) FROM shohin;

実行結果

 count 
-------
     5

帽子のkakakuがNULLなのでカウントされず5行という結果が帰ってきました。

合計を求める(SUM関数)

合計を求めるにはSUM関数を使います。

SUM関数は引数に「*」を取ることはできません。

ある列を指定して合計を計算させます。

SELECT SUM(kakaku) FROM shohin;

実行結果

 sum  
------
 4700

SUM関数はNULLが存在する列を指定した場合、NULL行を除外して計算します。

この例の場合は、100 + 100 + 1000 + 2000 + 1500 = 4700という計算を行なっています。

平均値を求める(AVG関数)

平均値を求めるにはAVG関数を使います。

SELECT AVG(kakaku) FROM shohin;

実行結果

         avg          
----------------------
 940.0000000000000000

実行された計算は次の通りです。

(100+100+1000+2000+1500) / 5 = 940

AVG関数もNULLの行は除外して計算します。

最大値・最小値を求める(MAX関数・MIN関数)

最大値を出すにはMAX関数、最小値を出すにはMIN関数を使います。

SELECT MAX(kakaku), MIN(kakaku) FROM kakaku;

実行結果

 max  | min 
------+-----
 2000 | 100

テーブルを集約して検索する方法まとめ

解説の内容をまとめます。

  • SQLでデータに対して何か操作や計算をおこなうには関数を使う
  • 最低限覚えておきたい関数は次の5つ
    COUNT関数、SUM関数、AVG関数、MAX関数、MIN関数

以上、お疲れ様でした。

コメント

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