Mysql纵表变成横表(行列转换)

tb2表有如下数据:

name              subject                  score

张三               语文                       74
张三                英语                      88
张三                物理                       90
李四                语文                      88
李四                英语                      67
李四                物理                        95

通过查询需要返回的SQL结果得到如下结构数据数据:

姓名         语文                  英语                     物理

张三          74                   88                        90
李四           88                    67                        95

sql语句如下:

select name as '姓名',
max(case subject when '语文' then score else 0 end) 语文,
        max(case subject when '英语' then score else 0 end) 英语,
        max(case subject when '物理' then score else 0 end)物理
from tb2
group by name

现在要求写出查询语句得到如下结果:

姓名         语文                  英语                     物理            总分                平均分

张三          74                    88                        90               252                    84
李四           88                    67                        95                250                    83.33

sql:

select name '姓名',
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '物理' then result else 0 end) 物理,
max(case subject when '英语' then result else 0 end)英语,
sum(result) as 总分,
avg(result) as 平均分
from tb
group by name

你可能感兴趣的:(mysql,数据库)