mysql查询每个学⽣的各科成绩,以及总分和平均分
今天看⼀个mysql教程,看到⼀个例⼦,感觉⾥⾯的解决⽅案不是很合理。
问题如下:
有学⽣表:
javascript和mysql菜鸟教程
成绩表:
java编程入门资料
想要查询出的效果:
其实就是原来是⼀个分数⼀条记录,现在变成⼀个学⽣⼀条记录。
那个教程⾥的sql如下:
select a.id as学号, a.name as姓名,
(case when b.kemu='语⽂'then score else0end)as语⽂,
(case when b.kemu='数学'then score else0end)as数学,
(case when b.kemu='英语'then score else0end)as英语
from student a, grade b
where a.id = b.idsleep函数作用
实现的效果:
很明显,每个学⽣的每个成绩都是单独⼀条记录,那和原来没有什么区别嘛。改进后的sql如下:
德国队比赛直播SELECT s.id, s.name,
max(case when g.kemu='语⽂'then score else0end)as语⽂,
max(case when g.kemu='数学'then score else0end)as数学,
max(case when g.kemu='英语'then score else0end)as英语,
sum(score)as总分,
表单大师怎么制作查询avg(score)as平均分
from student s LEFT JOIN grade g ON  s.id = g.s_id GROUP BY s.id
就是使⽤了聚合函数,效果如下:
sql数据库的建立
是不是⽐原来的效果好很多了呢

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。