MYSQL面试题

问题:假设有张学生成绩表(tb)以下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(获得以下结果): 
姓名 语文 数学 物理  总分
---- ---- ---- ----
李四 74   84   94
张三 74   83   93

 

答:mysql

mysql> select *,语文+数学+物理 as 总分 from (select 姓名,sum(if(课程='语文',分数,0))语文,sum(if(课程='数学',分数,0))数学,sum(if(课程='物理',分数,0))物理 from tb group by 姓名) t; 
+------+------+------+------+------+
| 姓名 | 语文 | 数学 | 物理 | 总分 |
+------+------+------+------+------+
| 李四 |   74 |   84 |   94 |  252 |
| 张三 |   74 |   83 |   93 |  250 |
+------+------+------+------+------+
2 rows in set (0.00 sec)sql

相关文章
相关标签/搜索