weixin_42512490 2019-11-07 21:41 采纳率: 75%
浏览 173
已采纳

关于数据库查询的一个问题

这是数据库表:

student_id 学生ID

course_id 课程ID

score 分数

查询课程ID为“1”比课程ID为“2”成绩高的所有学生的学号,SQL语句怎么写?

  • 写回答

2条回答 默认 最新

  • Json-Huang 2019-11-07 22:42
    关注

    可以考虑先行转列,即把数据行课程转换为列(课程1和课程2),然后从结果集中查询符合课程ID为“1”比课程ID为“2”成绩高

    1、创建表,比如表名student_score
    
    CREATE TABLE `student_score` (
      `id` int(11) DEFAULT NULL,
      `student_id` varchar(255) DEFAULT NULL COMMENT '学生id''',
      `course_id` varchar(255) DEFAULT NULL COMMENT '课程id',
      `score` int(11) DEFAULT NULL COMMENT '分数'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    
    2、插入测试数据
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '1', '1', '80', '001');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '2', '2', '78', '001');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '3', '3', '90', '001');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '4', '1', '90', '002');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '5', '2', '95', '002');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '6', '1', '90', '003');
    insert into `test`.`student_score` ( `id`, `course_id`, `score`, `student_id`) values ( '7', '2', '88', '003');
    
    

    测试数据:
    图片说明

    3、执行sql,
    SELECT * from(
    SELECT student_id,sum(case when course_id = '1' then score else 0 end) AS course1,
    sum(case when course_id = '2' then score else 0 end) AS course2
    from student_score GROUP BY student_id) sc
    where sc.course1>sc.course2
    

    结果:图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿