データの集約

合計値を求める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文の記載順序と実行順序

  • 記述順序 (必ずこの順序で書く必要がある)

      1. select ・・・ 取得行(カラム)の指定
      1. from ・・・ 対象テーブルの指定
      1. where ・・・ 絞り込み条件の指定
      1. group by ・・・ グループ化の条件を指定
      1. having ・・・ グループ化した後の絞り込み条件を指定
      1. order by ・・・ 並び替え条件を指定
      1. limit ・・・ 取得する行数の制限
  • 実行順序

      1. from ・・・ 対象テーブルの指定
      1. where ・・・ 絞り込み条件の指定
      1. group by ・・・ グループ化の条件を指定
      1. having ・・・ グループ化した後の絞り込み条件を指定
      1. select ・・・ 取得行(カラム)の指定
      1. order by ・・・ 並び替え条件を指定
      1. limit ・・・ 取得する行数の制限
  • 記述順序/実行順序の違い

      1. select / from
      1. from / where
      1. where / group by
      1. group by / having
      1. having / select
      1. order by / order by
      1. limit / limit

※ ポイント : selectの記述順序と実行順序が異なる