30DAYSトライアル4th

30DAYSトライアル4th(Rails)のまとめ【DAY8】

4th(Rails)DAY8の課題は「Progate SQL コースⅡ」です。

DAY7に引き続きProgateでSQLの学習になります。

検索結果の重複を省く:DISTINCT

SELECTのカラム指定の箇所を「DISTINCT(カラム名)」とすることで指定したカラムの重複したレコードを検索結果から省くことができる。

四則演算

SELECTのカラム指定の箇所で四則演算(+(加算)、-(減算)、*(乗算)、/(除算))を行うことができる。

合計を求める:SUM関数

SELECTのカラム指定に「SUM(カラム名)」とすることで、指定したカラム名の合計値を求めることができる。

平均を求める:AVG関数

SELECTのカラム指定に「AVG(カラム名)」とすることで、指定したカラム名の平均値を求めることができる。

データの個数を求める:COUNT関数

SELECTのカラム指定に「COUNT(カラム名)」とすることで、指定したカラムのデータの個数を求めることができる。

指定したカラムの値がNULLの場合はデータの個数にカウントされない。

値がNULLのレコードも含めてデータの個数を求めたい場合は「COUNT(*)」とするとレコードの行数が求めることができる。

最大・最小値を求める:MAX・MIN関数

SELECTのカラム指定に「MAX(カラム名)」とすることで指定したカラム名の最大値、「MIN(カラム名)」とすることで最小値を求めることができる。

— 最小値
SELECT MIN(カラム名)
FROM テーブル名
WHERE カラム名 = 条件 — MINはWHEREと併用できる</pre>

データをグループ化する:GROUP BY

FROM(WHEREがある場合はWHERE)の後ろに「GROUP BY カラム名」と記述することで、指定したカラムで重複データがグループ化され、集計関数(SUMなど)で集計することができる。

GROUP BYを指定した場合はSELECTに指定できるのはGROUP BYに指定したカラムと集計関数のみとなる。

グループ化したデータを絞り込む:HAVING

GROUP BYでグループした結果からさらに絞り込みを行いたい場合は「HAVING」を使用します。HAVINGでの絞り込みは集計関数の計算後の行われる。

HAVINGの条件に指定するカラムはGROUP BYで指定したカラムを使用する必要がある。

GROUP BYを指定した場合の処理順は以下のとおり。

  1. WHEREでの絞り込み
  2. GROUP BYでのグループ化
  3. 集計関数の計算
  4. HAVINGでの絞り込み

まとめ

GROUP BYの処理順は大事なので、しっかりとおさえておく。(処理順が分かっていないと思うようにデータが取得できない)

僕がSQLを初めて行ったときもGROUP BYでひっかかったので初心者の方は要注意だと思います。

ABOUT ME
Jyu2
【PC1台で稼ぐブロガー兼Webエンジニアを目指し中】IT情報やWebサービス、アプリなどの情報を発信/SIerで10年以上勤務→ストレスMAXで休職中→ブログとWebの学習を行い脱サラ計画中/ #30DAYSトライアル 1st完了→2nd実施中 / 日々の学習内容をブログにアウトプット / まずは月収5万円を目指す