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