合計値を求める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の記述順序と実行順序が異なる