表结构:
姓名 | 课程 | 分数 |
---|---|---|
张三 | 语文 | 74 |
张三 | 数学 | 83 |
张三 | 物理 | 93 |
李四 | 语文 | 74 |
李四 | 数学 | 84 |
李四 | 物理 | 94 |
转化结果:
姓名 | 语文 | 数学 | 物理 | 平均分 | 总分 |
---|---|---|---|---|---|
张三 | 74 | 83 | 93 | 83.33 | 250 |
李四 | 74 | 84 | 94 | 84.00 | 252 |
sql实现:
SELECT
t.student AS '姓名',
max(
CASE
WHEN course_name = '语文' THEN
'分数'
ELSE
0
END
) AS '语文',
max(
CASE
WHEN course_name = '数学' THEN
'分数'
ELSE
0
END
) AS '数学',
max(
CASE
WHEN course_name = '物理 ' THEN
'分数'
ELSE
0
END
) AS '物理 ',
cast(avg(t.score) as decimal(18,2)) AS '平均分',
sum(t.score) AS '总分'
FROM
course t
GROUP BY
t.student