继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

数据库知识点(2)——行转列

呦呦米
关注TA
已关注
手记 31
粉丝 103
获赞 598

此篇以统计学生各科成绩为例,介绍数据行转列的方法。
首先创建三个表student(学生)、subject(学科)、score(学生各科成绩),具体如下:
学生表
student
科目表
subject
学生各科成绩表
score
学生成绩一览表
show
按学生总成绩排名
总分
展示学生各科成绩并且按照总成绩排名
图片描述
图片描述
小记:
1、使用 case when a=b then .... else ....end 的方式找出符合条件的数据,并给该列命名。

打开App,阅读手记
4人推荐
发表评论
随时随地看视频慕课网APP

热门评论

SELECT a.name 姓名,SUM(b.score) 总分
FROM student a,score b WHERE a.id=b.student_id
GROUP BY a.name  ORDER BY 总分 DESC
SELECT a.name 姓名,SUM(b.score) 总分
FROM student a JOIN score b ON a.id=b.student_id
GROUP BY a.name  ORDER BY 总分 DESC


SELECT a.name 姓名,c.subject 科目,b.score 成绩
FROM student a JOIN score b ON a.id=b.student_id JOIN SUBJECT c ON b.subject_id=c.id


CREATE TABLE `mysql`.`student`( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(5) CHARSET utf8 COLLATE utf8_general_ci, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `mysql`.`subject`( `id` INT NOT NULL AUTO_INCREMENT, `subject` VARCHAR(5) CHARSET utf8 COLLATE utf8_general_ci, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
 CREATE TABLE `mysql`.`score`( `id` INT NOT NULL AUTO_INCREMENT, `student_id` INT, `subject_id` INT, `score` INT, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;


查看全部评论