次のデータを含むテーブルがあります。
Name Score
A 2
B 3
A 1
B 3
次の出力を与えるクエリが必要です。
Name Score
A 2
A 1
Subtotal 3
B 3
B 3
Subtotal 6
SQLコードを教えてください
次のデータを含むテーブルがあります。
Name Score
A 2
B 3
A 1
B 3
次の出力を与えるクエリが必要です。
Name Score
A 2
A 1
Subtotal 3
B 3
B 3
Subtotal 6
SQLコードを教えてください
一部の DBMS (MySQL や SQL-Server など) には、このようなクエリに使用できる句のWITH ROLLUP
修飾子があります。GROUP BY
SELECT pk, name,
SUM(score) AS score
FROM tableX
GROUP BY name, pk -- pk is the PRIMARY KEY of the table
WITH ROLLUP ;
SQL-Fiddleでのテスト
他の DBMS (SQL-Server、Oracle) は、GROUP BY GROUPING SETS
使用できる (そしてより強力なWITH ROLLUP
)機能を実装しています。
SELECT pk, name,
SUM(score) AS score
FROM tableX
GROUP BY GROUPING SETS
((name, pk), (name), ());
SQL-Fiddle-2でのテスト
@AndriyM は、GROUP BY ROLLUP
(Oracle と SQL-Server によって実装された) もあり、同じ結果が得られることを修正しました (上記の更新された SQL-Fiddle-2 を参照)。
SELECT pk, name,
SUM(score) AS score
FROM t
GROUP BY ROLLUP
(name, pk) ;