プログラミングの勉強日記
2020年6月15日 Progate Lv.107
SQLⅡ
DISTINCT
検索結果から重複するデータを除くことができる。DISTINCT (カラム名)
として使う。SELECTで取得するカラムに使用することで重複を省いたデータを取得できる。
SELECt DISTINCT (name) FROM purchases;
四則演算
足す(+)、引く(-)、かける(*)、割る(/)ことができる。四則演算をSELECTで取得するカラムに使用することで計算後のデータを取得できる。
SELECT name, price*1.1 FROM purchases;
SUM関数
数値の合計を計算するときに使う。SELECTで取得するカラム名を使用することで集計結果を取得できる。WHEREとも併用できる。(今回の例では、田中太郎のレコードを検索して、検索したレコードの数値の合計を計算している。)
SELECT SUM(price) FROM purchases;
SELECT SUM(price) FROM purchases WHERE name="田中太郎";
AVG関数
平均を計算する。SELECTで取得するカラムに用いることで計算結果を取得できる。WHEREと併用することもできる。(今回の例では、田中太郎のレコードを検索して、検索したレコードの数値の平均を計算している。)
SELECT AVG(price) FROM purchases;
SELECT AVG(price) FROM purchases WHERE name="田中太郎";
COUNT関数
指定したカラムのデータの合計数を計算する。COUNT関数でカラム名を指定した場合、nullになっているデータの数は計算されない。nullのデータを含めてすべてのデータの数を計算したい場合は、COUNT関数で*
(すべてのカラム)を指定する。WHEREを併用することもできる。(今回の例では、田中太郎のレコードを検索して、検索したレコードの数を計算している。)
SELECT COUNT(*) FROM purchases;
SELECT COUNT(*) FROM purchases WHERE name="田中太郎";
MAX/MIN関数
MAXを使うと指定したカラムのデータの中から最大のデータを取得することができる。MINを使うと最小のデータを取得できる。他の集計関数と同様にSELECTで取得したカラムに使用できる。WHEREと併用することもできる。(今回の例では、田中太郎のレコードを検索して、検索していたレコードの中でも最も大きい数値を取得している。)
SELECT MAX(price) FROM purchases;
SELECT MAX(price) FROM purchases WHERE name="田中太郎";
GROUP BY
データをグループ化できる。集計関数を取得するFROMの後ろにGROUP BY カラム名
を追加する。
GROUP BYを用いる場合、SELECTで使えるのはGROUP BYに指定しているカラム名と集計関数のみ。
複数のカラム名を適用させるときは、カラム名同士を,
(コンマ)でつなげる。その場合、データの組み合わせの数だけグループができ、集計関数によって各グループごとにデータを集計できる。また、WHEREと併用することもできる。その場合は、WHEREの後に書く。
SELECT SUM(price), purchased_at
FROM purchases
GROUP BY purchased_at;
HAVING
GROUP BYでグループ化したデータをさらに絞り込みたいときに使う。GROUP BY カラム名 HAVING 条件
とする。
- 検索 WHERE
- グループ化 GROUP BY
- 関数 COUNT, SUM, AVG, MAX, MIN
- HAVING
この順番で処理される。WHEREはグループ化される前のテーブルの全体を検索対象とするが、HAVINGはグループ化されたデータを検索対象とする。なので、条件文で使うカラムは必ずグループ化されたテーブルのカラム名を使う。