SQL

SQL の 基本 GROUP BY / HAVING でグループ化,絞り込み!

Kuni.W

SQL の SELECTの 基本 を使いデータの抽出が出来ますが、抽出する際に処理を入れることも可能です。例えば、まとまりやグループで、ひとまとまりにして抽出することが出来ます。実現するためには、 GROUP BY (グループバイ)や HAVING (ハビング)を使いましょう。

スポンサーリンク

GROUP BY (グループ化)

SELECT カラム1 , SUM(カラム2) FROM テーブルA GROUP BY カラム1;

意味:Aというテーブルから、1というカラム(列)をグルーピングし、1というカラムに対する2というカラムの合計値を、抽出する。 カラム1とカラム2を抽出する際に、同じカラム1の中で、カラム2を集計し、合計値(SUM)を、抽出するものです。 抽出された、レコードはカラム1の数にまとめられます。 例えば、同じIDで繰り返し、登録されているレコードに対して、ID毎の集計結果を集計する場合に使われます。 出席番号毎(syussekibango)の、年間のテストの点数(tensuu)を集計する。イメージです。

SELECT syussekibango , SUM(tensuu) FROM 3nen1kumi GROUP BY syussekibango;

HAVING (絞り込み)

SELECT カラム1 , SUM(カラム2) FROM テーブルA GROUP BY カラム1 HAVING SUM(カラム2)>=30;

意味:Aというテーブルから、1というカラム(列)をグルーピングし、1というカラムに対する2というカラムの合計値が、30以上のグループを、抽出する。 あれ?絞り込みは、WHEREじゃないの?と思われたと思います。察しが良いです。

[https://way2se.ringtrees.com/sql-002/]

絞り込みは、WHERE句であってますが、グループ化した場合は使えません。 WHERE句は、グループ化する前のレコードに対して効力があるため、グループ化された結果(たとえば集計された)に対しては、HAVING句を使う必要があります。 グループ化した際の絞り込みは、注意しましょう。   単独のレコードを抽出するなら、Excelでも良いですが、グループ化されたテーブルデータを扱うには、GROUP BY / HAVINGで、意図した結果を抽出することが出来ます。 データベースのメリット・恩恵を得るには覚えることが沢山ありますね。   その他、SQL構文は以下にて整理分類しています。

[https://way2se.ringtrees.com/sql-001/]

ABOUT ME
記事URLをコピーしました