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

相關文章
相關標籤/搜索