GROUP BY 句

指定したフィールド リストの中で同じ値を持つレコードを結合して 1 つのレコードにします。SELECT ステートメントで、Sum 関数や Count 関数などの SQL 集計関数を使用すると、各レコードの集計値が得られます。

構文

SELECT fieldlist
    FROM table
    WHERE criteria
    [GROUP BY groupfieldlist]

GROUP BY 句を使用する SELECT ステートメントには、次の指定項目があります。

指定項目 内容
fieldlist 取得する 1 つ以上のフィールドの名前。フィールド名の別名、SQL 集計関数、選択述語 (ALL、DISTINCT、DISTINCTROW、TOP) などの SELECT ステートメント オプションも指定できます。
table 取得するデータのあるテーブルの名前。詳細については、FROM 句を参照してください。
criteria 抽出条件。ステートメントに WHERE 句が含まれている場合、Microsoft Jet データベース エンジンは WHERE 句の条件に従ってレコードを抽出した後に値をグループ化します。
groupfieldlist レコードのグループ化に使用するフィールドの名前。最大 10 個まで指定できます。引数 groupfieldlist でのフィールド名の順序によって、グループ化のレベルが決まります。一番左に指定したフィールドのグループ化レベルが一番高くなります。

解説

GROUP BY 句は省略可能です。

SELECT ステートメントで SQL 集計関数を指定していない場合、集計値は計算されません。

GROUP BY 句の中で指定したフィールドに Null 値がある場合、それらの Null 値も省略されずにグループ化されます。ただし、Null 値は集計関数では評価されません。

グループ化しない行を除く場合は、WHERE 句を使用します。また、グループ化されているレコードにフィルタを掛ける場合は、HAVING 句を使用します。

SELECT ステートメントに 1 つでも SQL 集計関数を指定した場合は、FROM 句に挙げたテーブルのフィールドのうちメモ型 (Memo)OLE オブジェクト型 (OLE Object) 以外のフィールドは、SELECT ステートメントに入っていないものでも、すべて GROUP BY 句のフィールド リストに入れることができます。

SELECT ステートメントのフィールド リストに指定したすべてのフィールドは、GROUP BY 句、または SQL 集計関数の引数のどちらかに指定する必要があります。

参照
ALL DISTINCT、DISTINCTROW、TOP 述語 (Microsoft Jet SQL) SELECT ステートメント (Microsoft Jet SQL)
FROM 句 (Microsoft Jet SQL) SELECT...INTO ステートメント (Microsoft Jet SQL)
HAVING 句 (Microsoft Jet SQL) SQL 集計関数 (SQL)
ORDER BY 句 (Microsoft Jet SQL) WHERE 句 (Microsoft Jet SQL)

使用例

GROUP BY 句の使用例