読み方 : グループバイく

GROUP BY句 【GROUP BY clause】

概要

GROUP BY句(GROUP BY clause)とは、リレーショナルデータベースの操作や問い合わせに用いるSQLで、抽出した行をグループ化し、グループごとに何らかの集計値を算出するもの。SELECT文の中で使用する。

解説 SELECT文で抽出した行に対し、指定した列の値が同一である行同士を一つのグループとしてまとめ、グループごとに一つの値を返す。どんな値を返すかは集計関数によって指定し、「COUNT」(行数カウント)や「SUM」(合計値)、「AVG」(平均値)などを用いる。

例えば、「SELECT COUNT(*) AS Count, AVG(Age) AS AvgAge FROM Users GROUP BY Region」のように指定すると、Usersテーブルの行をRegionフィールドの値が同一であるもの同士でグループ化し、その行数をCountとして、Ageフィールドの平均値をAvgAgeとして返す。

対象をテーブル全体ではなく指定した条件に基づいて絞り込みたい場合は末尾にHAVING句を付け加える。例えば、先のクエリの末尾に「HAVING Age > 20」を加えると、Ageフィールドが20より大きい行のみを対象に集計を行う。

(2022.4.7更新)

資格試験などの「GROUP BY句」の出題履歴

▼ 基本情報技術者試験
令7修1 問20】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
令2修6 問28】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平31春 問27】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平29修12 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平28修7 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平27修12 問28】 “注文明細” 表に対するSQLの構文として,正しいものはどれか。 注文明細(注文番号,注文日,数量)。
平27修1 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平25春 問28】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平21秋 問33】 SQLの構文として,正しいものはどれか。