Progate SQLコース2 復習
- DISTINCT
重複するデータを除いてレコードを取得する
ex)purchasesテーブルからcharacter_nameカラムの重複するレコードを除いて取得する
SELECT DISTINCT(character_name) FROM purchases;
- 四則演算
データを加工して取得する
ex)purchasesテーブルからpriceの値に1.08を掛けたpriceカラムを取得する
SELECT price * 1.08 FROM purchases;
- SUM
データの合計を取得する
ex)purchasesテーブルからpriceカラムの合計値を取得する
SELECT SUM(price) FROM purchases;
- AVG
データの平均を取得する
ex)purchasesテーブルからpriceカラムの平均値を取得する
SELECT AVG(price) FROM purchases;
- COUNT
データの個数を取得する
ex)purchasesテーブルからnameカラムのデータ数を取得する
SELECT COUNT(name) FROM purchases;
ただし、NULLのデータはカウントされない
- MAX/MIN
データの最大値・最小値を取得する
ex)purchasesテーブルからpriceカラムの最大値を取得する
SELECT MAX(price) FROM purchases;
ex)purchasesテーブルからnameカラムの最小値を取得する
SELECT MIN(price) FROM purchases;
- GROUP BY
指定したカラム名のデータをグループ化して取得する
ex)purchasesテーブルからpurchased_at毎のpriceカラムの合計値を取得する
SELECT SUM(price), purchased_at FROM purchases GROUP BY purchased_at;
ただし、SELECTで指定できるのはGROUP BYで指定しているカラム名と集合関数のみ
- 複数カラムのGROUP BY
指定した複数カラム名のデータをグループ化して取得する
ex)purchasesテーブルからpurchased_atとcharacter_name毎のpriceカラムの合計値を取得する
SELECT SUM(price), purchased_at, character_name FROM purchases GROUP BY purchased_at, character_name;
- GROUP BY(WHERE)
指定したカラム名のうち条件に一致するデータをグループ化して取得する
ex)purchasesテーブルの内、character_name="にんじゃわんこ"のデータを検索し、purchased_at毎の合計値とpurchased_atを取得する
SELECT SUM(price), purchased_at FROM purchases WHERE character_name="にんじゃわんこ" GROUP BY purchased_at;
GROUP BYとWHEREを組み合わせた場合、SQLは以下の順番で実行される
1. 検索(WHERE)
2. グループ化(GROUP BY)
3. 関数(SUM,AVG)
- HAVING
グループ化したデータの内、条件に一致するデータを取得する
ex)purchasesテーブルの内、purchased_at毎の合計値とpurchased_atを取得し、合計値が2000以上のデータを取得する
SELECT SUM(price), purchased_at FROM purchases GROUP BY purchased_at HAVING SUM(price) > 2000;
GROUP BYとHAVINGを組み合わせた場合、SQLは以下の順番で実行される
1. 検索(WHERE)
2. グループ化(GROUP BY)
3. 関数(SUM,AVG)
4. HABING