DISTINCT
ex.sql
SELECT DISTINCT(カラム名) FROM テーブル名
→SELECTで取得するカラムに使用することで、重複を省いたデータを取得できる
Ex.sql
SELECT distinct(name)
FROM purchases;
→purhaseテーブルのnameカラム(重複なし)が取得される
四則演算
ex.sql
SELECT カラム名 演算子 FROM テーブル名
例:元のテーブルは以下
消費税込みの値段をまとめたカラムを用意する↓
Ex.sql
SELECT name, price,price*1.08
FROM purchases;
結果
集計関数
例:SUM
ex.sql
SELET SUM(カラム名) FROM テーブル
→選択したカラムの合計が求まる
例:
ex.sql
SELECT SUM(price)
FROM purchases;
また、WHERE句とも併用できる
ex.sql
SELECT SUM(price)
FROM purchases
WHERE character_name = "にんじゃわんこ"
;
→挙動はAVG(平均値を求める関数)と同じ
例2:COUNT
ex.sql
SELET COUNT(カラム名) FROM テーブル
例:
ex.sql
SELECT COUNT(name)
FROM purchases;
結果:
注意!この場合、nullのレコードはカウントされない!
→nullのレコードもカウントしたい場合「*」を使う
例:
ex.sql
SELECT COUNT(*)
FROM purchases;
→* を使った場合、特定のカラムのデータの数ではなく、テーブル全体のレコードの数を計算
また、COUNTもwhereと併用できる
例:
ex.sql
SELECT COUNT(*)
FROM purchases
WHERE character_name = "にんじゃわんこ"
;
例3:MAX,MIN
ex.sql
SELECT MAX(カラム名) FROM テーブル名
→特定のカラムの最大値データを取得
例:
wx.sql
SELECT MAX(price)
FROM purchases;
結果:
where句との併用も可
例:
ex.sql
SELECT MAX(price)
FROM purchases
WHERE character_name = "にんじゃわんこ"
;
GROUP BY
GROUP BYを用いる場合、SELECTで使えるのは、GROUP BYに指定しているカラム名と、集計関数のみ
複数のgroup byだと
ex.sql
SELECT sum(price),purchased_at,character_name
FROM purchases
WHERE category='食費'
GROUP BY purchased_at,character_name ;
whereとも併用できる
ex.sql
SELECT character_name, SUM(price)
FROM purchases
WHERE category = 'おもちゃ'
GROUP BY character_name;
HAVING
- GROUP BYを更に条件で絞り込むのに使う
- 条件で絞り込むというとwhereっぽいが、コマンド実行順は以下のようになるのでGROUP BYのあとにwhereというのはできない
- また、WHEREはグループ化される前のテーブル全体を検索対象とするのに対し、HAVINGはGROUP BYによってグループ化されたデータを検索対象とする
- なので、条件文で使うカラムは必ずグループ化されたテーブルのカラムを使う
ex.sql
SELECT SUM(price),purchased_at
FROM purchases
GROUP BY purchased_at
HAVING SUM(price) > 2000
;










