トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-256 キーブレイクごとに小計を出力
SQLパズル
GradeTable
ID grade score
-- ----- -----
1 A 3
1 A 3
2 A 2
2 B 1
2 B 3
3 C 1
3 C 2
3 C 6
IDのブレークごとに小計を出力する。
出力結果
ID grade score
-- ----- -----
1 A 3
1 A 3
1 SubSum 6
2 A 2
2 B 1
2 B 3
2 SubSum 6
3 C 1
3 C 2
3 C 6
3 SubSum 9
データ作成スクリプト
create table GradeTable(ID,grade,score) as
select 1,'A',3 from dual union all
select 1,'A',3 from dual union all
select 2,'A',2 from dual union all
select 2,'B',1 from dual union all
select 2,'B',3 from dual union all
select 3,'C',1 from dual union all
select 3,'C',2 from dual union all
select 3,'C',6 from dual;
SQL
select ID,
case grouping(grade) when 1 then 'SubSum' else grade end as grade,
case grouping(score) when 1 then sum(score) else score end as score
from GradeTable
group by grouping sets((ID,grade,score,RowNum),ID)
order by ID,grade,score;
解説