データの集約
合計値を求めるsum集約関数
- 構文
sum(expr) ※exprの合計値を返す。
平均値を求めるavg集約関数
- 構文
avg(expr) ※exprの平均値を返す。
最小値を求めるmin集約関数
min(expr) ※exprの最小値を返す。
最大値を求めるmax集約関数
max(expr) ※exprの最大値を返す。
集約関数におけるnullの扱い
nullとは
- 値がないことを示す特別な表現
数値の0でも、長さ0でもなく、値がない。
集約関数では、基本的にはnullが無視される。
対象行の行数を数えるcount集約関数
- 構文
count(expr) 補足: * exprの数をカウント * count(*)とすると、テーブルの行数を取得できる。 * userテーブルの行数が、ユーザー数となる。
指定した期間のユニークユーザー数を求める方法
ここでの、ユニークユーザーとは、決まった集計期間内にアクセスしたユーザーの数を表す数値
あるユーザーAが決まった機関内に10アクセスしたとしても、1と数える。 where句と集約関数count(distinct expr)を組み合わせて使う。
count(distinct exor)の形で、count関数は、重複を排除した上で、個数を取得できる。
テーブルのデータをグループ化するgroup by句
- 構文
select 列名 from テーブル名 group by 列名;
- countなどを使ってデータを集計する時に、グループ単位で集計が行われる
- group byで指定する列名によって、グループ化される。
集約結果をさらに絞り込むhaving句
- where句と同様に、条件に合致する行だけに絞り込める。
having句は、テーブルのデータを集約して結果に対して、条件式を適用する場合に利用する。
構文
select 列1, ... from テーブル名 where 条件式 group by 列1, ... having 条件式;
記述順序 having
- select
- ↓
- from
- ↓
- where
- ↓
- group by
- ↓
- having
※ ポイントとしては、havingは、group byの後に書く
select文の記載順序と実行順序
記述順序 (必ずこの順序で書く必要がある)
- select ・・・ 取得行(カラム)の指定
- from ・・・ 対象テーブルの指定
- where ・・・ 絞り込み条件の指定
- group by ・・・ グループ化の条件を指定
- having ・・・ グループ化した後の絞り込み条件を指定
- order by ・・・ 並び替え条件を指定
- limit ・・・ 取得する行数の制限
実行順序
- from ・・・ 対象テーブルの指定
- where ・・・ 絞り込み条件の指定
- group by ・・・ グループ化の条件を指定
- having ・・・ グループ化した後の絞り込み条件を指定
- select ・・・ 取得行(カラム)の指定
- order by ・・・ 並び替え条件を指定
- limit ・・・ 取得する行数の制限
記述順序/実行順序の違い
- select / from
- from / where
- where / group by
- group by / having
- having / select
- order by / order by
- limit / limit
※ ポイント : selectの記述順序と実行順序が異なる