以下の内容はhttps://dk521123.hatenablog.com/entry/2010/07/17/052306より取得しました。


【SQL】SQL ~ GROUP BY句 ~

■ はじめに

SQL の GROUP BY句について取り上げる

目次

【1】GROUP BY
【2】構文
【3】サンプル
 例1:コードごとに合計金額を算出する
 例2:年月ごとのスケジュール数を表示
【4】使用上の注意
 1)SELECT文に書くことができるカラムに制限がある
 2)GROUP BY句にAS句で指定した別名は指定不可
 3)GROUP BY句に並び替え機能はない
 4)GROUP BY句の結果を条件絞り込みしたい場合はHAVING句

【1】GROUP BY

 * データを集結する
 * 複数でもグルーピングも可能

【2】構文

SELECT 【列名】 FROM 【テーブル名】 GROUP BY 【列名】;

【3】サンプル

例1:コードごとに合計金額を算出する

SELECT code, SUM(price) FROM item GROUP BY code;

例2:年月ごとのスケジュール数を表示

SELECT
  CONVERT(char(4), YEAR(date)) + '/' + CONVERT(char(2), MONTH(date)) AS YearMonth,
  COUNT(*) AS ScheduleCount
FROM
  Schedule
GROUP BY
  CONVERT(char(4), YEAR(date)) + '/' + CONVERT(char(2), MONTH(date))

【4】使用上の注意

1)SELECT文に書くことができるカラムに制限がある

* GROUP BY句を使用した場合、SELECT文で表示させるには、
 以下のいずれかになる

[1] GROUP BY句で指定されたカラム(集約キー)
[2] 集約関数(sum, count etc...)
[3] 定数

SELECT
  code,
  companyName,
  branchName
FROM
  company AS c
JOIN
  branch AS b
ON
  c.code = b.companyCode
GROUP BY
  code,
  companyName;

2)GROUP BY句にAS句で指定した別名は指定不可

SELECT
 NAME AS N,
 COUNT(*)
FROM
 person
GROUP BY
 N -- これができない。
;

3)GROUP BY句に並び替え機能はない

* 並び替えはORDER BY句で指定する

4)GROUP BY句の結果を条件絞り込みしたい場合はHAVING句

* WHERE句では、
 GROUP BY句の結果を条件絞り込むことができないため、
 代わりに HAVING句を使う
=> WHERE句は、GROUP BY句よりも前に実行される
=> HAVING句については、以下の関連記事を参照のこと

HAVING句
https://dk521123.hatenablog.com/entry/2010/07/13/154947

参考文献

http://blog.livedoor.jp/akf0/archives/51064573.html
http://2ndgd.blogspot.com/2010/12/sql-server.html

関連記事

SQL ~ HAVING句 ~
https://dk521123.hatenablog.com/entry/2010/07/13/154947
パフォーマンスの良いSQLを記述 ~検索条件編~
https://dk521123.hatenablog.com/entry/2012/05/05/003504
複合キーの重複データを取得することを考える
https://dk521123.hatenablog.com/entry/2022/06/06/125440
グループ内のMAXデータを取得する
https://dk521123.hatenablog.com/entry/2018/10/06/230841
複数の集計を1回のSQL文で行う方法を考える
https://dk521123.hatenablog.com/entry/2018/04/12/210108




以上の内容はhttps://dk521123.hatenablog.com/entry/2010/07/17/052306より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14