集計

rollup 構文では、複数のグループ化レベルの集約結果を単一の結果セットで返すことができます。 例えば、次の文は、3 つのグループ化レベルでカウントを返します。

SELECT <col1>, <col2>, COUNT(*) FROM <table> GROUP BY ROLLUP (col1, 
col2);
グループ・レベルは、複数の GROUP BY オプションを次のように同時に指定した場合と同じ結果として返されます。
GROUP BY col1, col2
GROUP BY col1
GROUP BY ()

GROUP BY () の構文は、(group by がまったく存在しないという仮定で) 総集約を指定する場合と同等です。

前の rollup 操作の結果は、次の UNION の結果と同等です。
SELECT col1, col2, COUNT(*) FROM <table> GROUP BY col1, col2 UNION ALL
SELECT col1, null as col2, count(*) FROM <table> GROUP BY col1 UNION 
ALL
SELECT null as col1, null as col2, count(*) FROM <table>;
次の例を考慮してください。
SELECT state, city, COUNT(*) FROM citizens GROUP BY ROLLUP (state, 
city);
この例では、次のような結果になります。
  • それぞれの州/都市のカウント
  • 各州のカウント
  • カウントの総数