はじめに
SQL学習のために備忘録として、残しております
データを集約する
関数を用いてSELECT文で取り出したレコードの結果をまとめる
集約関数
SQLでも計算を行う為の集約関数が用意されている
計算を行う事で、SELECT文で取り出した結果をまとめることができる
関数名 | 説明 |
---|---|
AVG | カラムがNULLでないレコード数を計算する カラム名に「*」を指定すると、NULL値を含めてテーブルの全レコードを計算する COUNT(DISTINCT カラム名)で重複値を排除したレコードを計算する |
MAX | カラムの最大値を計算する |
MIN | カラムの最小値を計算する |
SUM | カラムの合計値を計算する |
集約関数ではレコードのグループ単位で計算を行い、1つの結果を返す
SELECT SUM(計算したいカラム名) FROM 対象のテーブル名;
抽出データをグループ化
一つのテーブル内にあるレコードを複数のグループごとに分割する事をグループ化という
SELECT 取得したいカラム数 FROM 対象とするテーブル名 (WHERE 取得したいカラムの条件) GROUP BY グループ化したいカラム名;
グループ化した結果に条件を指定して絞り込む
WHERE句は条件を与えて抽出するレコードを絞り込めるが、グループ化したグループに対して条件を設定できない。
そこでグループ化されて抽出されたレコードに対して条件を設定して絞り込むには、HAVING句を使用する
SELECT 取得したいカラム FROM 対象とするテーブル (WHERE 取得したいレコードの条件) GROUP BY グループ化したいカラム名 HAVING 取得したいグループの条件;
HAVING句には、取得したいグループの条件として、集約関数を条件に含めることができる
※重要
WHERE句とHAVING句は性質が似ているため混同されがちである
ここで抑えておきたいポイントは、WHERE句はSELECT句に対する絞り込み条件を設定する際に使われ、HAVING句はGROUP BY句に対する絞り込み条件を設定する際に使われる