Sql代码: 1 select t.user_name, 2 sum(decode(t.course, ‘语文‘, score,null)) as CHINESE, 3 sum(decode(t.course, ‘数学‘, score,null)) as MATH, 4 sum(decode(t.course, ‘英语‘, score,null)) as ENGLISH 5 from test_tb_grade t 6 group by t.user_name 7 order by t.user_name 1.3、延伸
如果要实现对各门功课的不同分数段进行统计,效果图如下:
具体的实现sql如下: Sql代码:
01 select t2.SCORE_GP, 02 sum(decode(t2.course, ‘语文‘, COUNTNUM,null)) as CHINESE, 03 sum(decode(t2.course, ‘数学‘, COUNTNUM,null)) as MATH, 04 sum(decode(t2.course, ‘英语‘, COUNTNUM,null)) as ENGLISH 05 from ( 06 select t.course, 07 case when t.score <60 then ‘00-60‘ 08 when t.score >=60 and t.score <80 then ‘60-80‘ 09 when t.score >=80 then ‘80-100‘ end as SCORE_GP, 10 count(t.score) as COUNTNUM 11 FROM test_tb_grade t 12 group by t.course, 13 case when t.score <60 then ‘00-60‘ 14 when t.score >=60 and t.score <80 then ‘60-80‘ 15 when t.score >=80 then ‘80-100‘ end 16 order by t.course ) t2 17 group by t2.SCORE_GP 18 order by t2.SCORE_GP 二、列转行
1 select user_name, ‘CN_SCORE‘ COURSE , CN_SCORE as SCORE from test_tb_grade2 2 union 3 select user_name, ‘MATH_SCORE‘ COURSE, MATH_SCORE as SCORE from test_tb_grade2 4 union 5 select user_name, ‘EN_SCORE‘ COURSE, EN_SCORE as SCORE from test_tb_grade2 6 order by user_name,COURSE