50个SQL语句(MySQL版) 问题二十二[亲测有效]

50个SQL语句(MySQL版) 问题二十二[亲测有效]表结构 student(StuId,StuName,StuAge,StuSex) 学生表 teacher(TId,Tname) 教师表 course(CId,Cname,C_TId) 课程表 sc(S

50个SQL语句(MySQL版) 问题二十二

————————–表结构————————–

student(StuId,StuName,StuAge,StuSex) 学生表

teacher(TId,Tname) 教师表

course(CId,Cname,C_TId) 课程表

sc(SId,S_CId,Score) 成绩表

———————————————————-

问题二十二:查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML(003),数据库(004)格式:[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩

SELECT stu.StuId,stu.StuName,
BM.Score AS BM,Marx.Score AS Marx,UML.Score AS UML,DB.Score AS DB,
(IFNULL(BM.Score,0)+IFNULL(Marx.Score,0)+IFNULL(UML.Score,0)+IFNULL(DB.Score,0))/
(SUM(CASE WHEN IFNULL(BM.Score,0)=0 THEN 0 ELSE 1 END)+
SUM(CASE WHEN IFNULL(Marx.Score,0)=0 THEN 0 ELSE 1 END)+
SUM(CASE WHEN IFNULL(UML.Score,0)=0 THEN 0 ELSE 1 END)+
SUM(CASE WHEN IFNULL(DB.Score,0)=0 THEN 0 ELSE 1 END)) AS AvgScore
FROM student stu
LEFT JOIN sc AS BM ON BM.SId=stu.StuId AND BM.S_CId="001"
LEFT JOIN sc AS Marx ON Marx.SId=stu.StuId AND Marx.S_CId="002"
LEFT JOIN sc AS UML ON UML.SId=stu.StuId AND UML.S_CId="003"
LEFT JOIN sc AS DB ON DB.SId=stu.StuId AND DB.S_CId="004"
GROUP BY stu.StuId
ORDER BY AvgScore DESC
LIMIT 2,4;

代码100分

答案仅供参考,不一定完全正确,若发现错误或有更好的,欢迎评论,互相交流,一起成长!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8088.html

(0)
上一篇 2023-03-07
下一篇 2023-03-07

相关推荐

  • SQL 入门教程:更新(UPDATE)数据[通俗易懂]

    SQL 入门教程:更新(UPDATE)数据[通俗易懂]目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 更新(修改)表中的数据,可以使用 UPDATE 语句。有两种使用 UPDATE 的方式: 更新表中的特定行; 更新表中的所有行。 下面分别介绍

    2023-04-21
    154
  • mysql设置编码格式-[亲测有效]

    mysql设置编码格式-[亲测有效]创建table的时候就使用utf8编码 在每次创建表的时候都在最后加上 就可以很好的支持中文 修改已经有的table的编码 当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语

    2023-01-31
    148
  • 利用Python的re模块进行文本匹配和替换

    利用Python的re模块进行文本匹配和替换Python是一种高级编程语言,它由Guido van Rossum在1989年创建。Python语言具有简单、易读、易扩展、跨平台等多种优点,使其在众多编程语言中备受欢迎。其中,Python的re模块提供了强大的正则表达式工具,可以轻松实现文本匹配和替换。

    2023-12-09
    147
  • oracle 删除 归档

    oracle 删除 归档oracle删除归档,可以使用rman删除归档,也可以使用rm直接删除! 1.使用rm删除归档: 删除所有归档:find /u01/app/oracle/archive -mtime -1 -nam…

    2022-12-23
    151
  • Python中的对象是类的实例

    Python中的对象是类的实例Python是一种面向对象的语言,它的一切皆对象,而这些对象都是类的实例。Python中的类定义了一组属性和方法,而对象则是通过类来创建、实例化的。

    2024-01-14
    107
  • 如何使用Python中的sleep函数提升脚本性能

    如何使用Python中的sleep函数提升脚本性能Python中的sleep函数是线程模块的一部分。当线程在执行任务时可以使用sleep函数,暂停一定时间(秒),让CPU去执行其他任务,从而提升脚本的性能。

    2024-03-22
    78
  • Python String长度函数:计算字符串长度

    Python String长度函数:计算字符串长度在Python中,字符串是一种很常用的数据类型,它是由一系列字符组成的序列。Python给我们提供了一个内置函数len(),用于计算字符串的长度。根据官方文档的介绍:len(s)函数返回对象(字符、字节、列表、字典等)的长度或元素个数。在本文中,我们聚焦在字符串上。

    2024-04-12
    82
  • 牛客网sql笔试bug_sql语句面试题及答案

    牛客网sql笔试bug_sql语句面试题及答案01 某音短视频 SQL156 各个视频的平均完播率 【描述】用户-视频互动表tb_user_video_log。(uid-用户ID, video_id-视频ID, start_time-开

    2023-05-26
    151

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注