MENU

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

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

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

目次

目次

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

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

SELECT DISTINCT(カラム名)
FROM テーブル名;

四則演算

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

SELECT カラム名 + 数値,  -- 加算
              カラム名 - 数値,  -- 減算
              カラム名 * 数値, -- 乗算
              カラム名 / 数値  -- 除算
FROM テーブル名;

合計を求める:SUM関数

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

SELECT SUM(カラム名)
FROM テーブル名
WHERE カラム名 = 条件  -- SUMはWHEREと併用できる</pre> 

平均を求める:AVG関数

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

SELECT AVG(カラム名)
FROM テーブル名
WHERE カラム名 = 条件  -- AVGはWHEREと併用できる</pre> 

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

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

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

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

<pre class="lang:mysql decode:true " >SELECT COUNT(カラム名)
FROM テーブル名
WHERE カラム名 = 条件  -- COUNTはWHEREと併用できる&lt;/pre&gt; 

-- テーブルの行数を求める場合
SELECT COUNT(*)
FROM テーブル名;
</pre> 

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

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

-- 最大値
SELECT  MAX(カラム名)
FROM テーブル名
WHERE カラム名 = 条件  -- MAXはWHEREと併用できる&amp;lt;/pre&amp;gt;
SELECT カラム名, SUM(カラム名)  -- SELECTに指定できるのはGROUP BYのカラムと集計関数のみ
FROM テーブル名
GROUP BY カラム名

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

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

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

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

SELECT カラム名, SUM(カラム名)  -- SELECTに指定できるのはGROUP BYのカラムと集計関数のみ
FROM テーブル名
WHERE 条件
GROUP BY カラム名, カラム名, ・・・

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

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

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

SELECT カラム名, SUM(カラム名)
FROM テーブル名
WHERE 条件
GROUP BY カラム名, カラム名, ・・・
HAVING 条件  -- 条件の指定するカラムはGROUP BYで指定したもののみ指定できる

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

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

まとめ

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

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ソフトウェア会社(SIer)で10年以上勤務のシステムエンジニア|ポケットWiFi使用歴2年以上|ポケットWiFi+αで快適でお得なインターネット環境を構築するための情報を発信|その他、IT情報やWebサービス、アプリ、ガジェットなどの情報を発信|自分と他の人のカバンの中身を紹介するメディア「カバンの中身ラボ(https://kaban-no-nakami-labo.com/)」も運営しています。
ポケットWiFi選びに迷ったらTwitter、お問合せフォームからご連絡ください。

コメント

コメントする

目次