下記のようなテーブルからデータを選択したい時に使用するのが、SELECT
文だった。
今回は、さらにテーブルデータを集約したり、並び替えなどをする方法について学んだ。
集約関数
テーブルのデータを集計したりする際に用いるのが集約関数(または集合関数)。とりあえず、COUNT
,SUM
,AVG
,MAX
,MIN
の5つを覚えておけば、ひとまず良いみたい。
COUNT
:テーブルのレコード数(行数)を数える
- コマンド:
SELECT COUNT(引数) FROM テーブル名;
- 実行例:
引数が
*
の場合はNULL
もカウントされるが、列を限定するとNULL
は除外してカウントされる。
SUM
:合計値を求める
- コマンド:
SELECT SUM(引数) FROM テーブル名;
- 実行例:
SUM
の対象列にNULL
があった場合は、当該データを除外した上で結果が返される。
AVG
:平均値を求める
- コマンド:
SELECT AVG(引数) FROM テーブル名;
実行例:
SUM
の対象列にNULL
があった場合は、当該データを除外した上で結果が返される。 具体的には、hanbai_tankaを例にすると、下記の計算がされているということ。sql SUM(shiire_tanka)/COUNT(shiire_tanka) -- 2035.0(12210/6)
NULL
を値0とみなして、計算させる方法もあるが、第六章で学ぶ。
MAX
,MIN
:最大値・最小値を求める
- コマンド(
MAX
):SELECT MAX(引数) FROM テーブル名;
- コマンド(
MIN
):SELECT MIN(引数) FROM テーブル名;
- 実行例:
重複値を除外して集約関数を用いる
- コマンド:
SELECT 集約関数(DISTINCT キーワード) FROM テーブル名
- 実行例:
GROUP BY
:グループに分ける
- コマンド:
SELECT カラム名 FROM テーブル名 GROUP BY 集約キー(グループ化列)
- 実行例1:
- 実行例2:WHERE句を使う
HAVING
:集約結果に条件を指定する
WHERE
との違いは下記。
句名 | 説明 |
---|---|
WHERE | 行に対する条件指定 |
HAVING | グループに対する条件指定 |
要はグループ分けした後のものに対して条件指定をしたい場合は、HAVING
を用いると覚えておけば良さそう。よってHAVING
はGROUP BY
の後ろに記述する。
- コマンド:
SELECT カラム名 FROM テーブル名 GROUP BY カラム名 HAVING 条件
- 実行例:
ORDER BY
:並び替え
ORDER BY
句はSELECT
文の最後に書く。昇降については、キーワードを設定する。昇順はASC
、降順はDESC
というキーワードを設定する。省略した場合は、実務的には昇順の使用率が高いと言う理由から、暗黙的に昇順になる。
- コマンド:
SELECT カラム名 FROM テーブル名 ORDER BY 基準列
- 実行例1:降順
- 実行例2:複数ソートキーを設定
- 実行例3:別名を使う