首页 > 数据库 >高频SQL 50题(基础版): 学生们参加各科测试的次数 | 2023-08-21

高频SQL 50题(基础版): 学生们参加各科测试的次数 | 2023-08-21

时间:2023-08-21 18:02:48浏览次数:50  
标签:21 08 Programming name student 2023 id Math subject

问题

学生表: Students

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| student_id    | int     |
| student_name  | varchar |
+---------------+---------+
在 SQL 中,主键为 student_id(学生ID)。
该表内的每一行都记录有学校一名学生的信息。

 

科目表: Subjects

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| subject_name | varchar |
+--------------+---------+
在 SQL 中,主键为 subject_name(科目名称)。
每一行记录学校的一门科目名称。

 

考试表: Examinations

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| student_id   | int     |
| subject_name | varchar |
+--------------+---------+
这个表可能包含重复数据(换句话说,在 SQL 中,这个表没有主键)。
学生表里的一个学生修读科目表里的每一门科目。
这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。

查询出每个学生参加每一门科目测试的次数,结果按 student_id 和 subject_name 排序。

查询结构格式如下所示。

输入:
Students table:
+------------+--------------+
| student_id | student_name |
+------------+--------------+
| 1          | Alice        |
| 2          | Bob          |
| 13         | John         |
| 6          | Alex         |
+------------+--------------+
Subjects table:
+--------------+
| subject_name |
+--------------+
| Math         |
| Physics      |
| Programming  |
+--------------+
Examinations table:
+------------+--------------+
| student_id | subject_name |
+------------+--------------+
| 1          | Math         |
| 1          | Physics      |
| 1          | Programming  |
| 2          | Programming  |
| 1          | Physics      |
| 1          | Math         |
| 13         | Math         |
| 13         | Programming  |
| 13         | Physics      |
| 2          | Math         |
| 1          | Math         |
+------------+--------------+
输出:
+------------+--------------+--------------+----------------+
| student_id | student_name | subject_name | attended_exams |
+------------+--------------+--------------+----------------+
| 1          | Alice        | Math         | 3              |
| 1          | Alice        | Physics      | 2              |
| 1          | Alice        | Programming  | 1              |
| 2          | Bob          | Math         | 1              |
| 2          | Bob          | Physics      | 0              |
| 2          | Bob          | Programming  | 1              |
| 6          | Alex         | Math         | 0              |
| 6          | Alex         | Physics      | 0              |
| 6          | Alex         | Programming  | 0              |
| 13         | John         | Math         | 1              |
| 13         | John         | Physics      | 1              |
| 13         | John         | Programming  | 1              |
+------------+--------------+--------------+----------------+
解释:
结果表需包含所有学生和所有科目(即便测试次数为0):
Alice 参加了 3 次数学测试, 2 次物理测试,以及 1 次编程测试;
Bob 参加了 1 次数学测试, 1 次编程测试,没有参加物理测试;
Alex 啥测试都没参加;
John  参加了数学、物理、编程测试各 1 次。

解答

# Write your MySQL query statement below
SELECT s.student_id, s.student_name, su.subject_name, COUNT(e.subject_name) AS attended_exams
FROM Students AS s
JOIN Subjects AS su
LEFT JOIN Examinations AS e
ON e.student_id = s.student_id
AND e.subject_name = su.subject_name
GROUP BY s.student_id, su.subject_name
ORDER BY s.student_id, su.subject_name

标签:21,08,Programming,name,student,2023,id,Math,subject
From: https://blog.51cto.com/u_7682110/7178074

相关文章

  • 2023年免费图床有哪些?
    最近频繁使用到图床,搜集了自己使用过的比较好用的国内图床网站,有知名大站也有小众网站,使用体验都不错!1.路过图床地址:https://imgse.com/介绍:国内比较知名的图床,用户使用较多的图床工具之一,免费,但是页面有少量广告。高速稳定的图片上传和外链服务,全球CDN加速,最大单张支持1......
  • 北大ACM poj2141 Message Decowding
    MessageDecowdingTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:10326 Accepted:5672DescriptionThecowsarethrilledbecausethey'vejustlearnedaboutencryptingmessages.Theythinktheywillbeabletousesecretmessagestoplot......
  • 2023商用密码大会启幕,天翼云商用密码能力体系重磅亮相!
    8月9日,在国家密码管理局指导下,由中国密码学会作为支持单位,郑州市人民政府、河南省密码管理局主办的2023商用密码大会拉开帷幕。大会以“密码赋能美好发展”为主题,旨在推进商用密码创新驱动、前沿交流、产业对接、协同合作。作为参展企业,天翼云展示了云电脑、智能计算平台“云骁”、......
  • 2023-08-21 canvas之fillText如何换行
    canvas的文本绘制:ctx.fillText('这是一段需要换行的内容啦啦啦啦啦啦啦啦',0,0);换行方式1:1、设置最大宽度:100(具体根据业务来定);ctx.fillText('这是一段需要换行的内容啦啦啦啦啦啦啦啦',0,0,100);2、判断要显示的文字内容是否超出100的长度,超出就截取一下,把超出的内容再......
  • 波纹管闸阀行业调研及未来趋势2023
    2023年全球及中国波纹管闸阀行业头部企业市场占有率及排名调研报告 2022年全球波纹管闸阀市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国波纹管闸阀市场占据全球约%的市场......
  • 2023.8.21 模拟赛
    A多次询问\(l,r\),求\(\sum_{x=l}^r\sum_{y=x}^ra_x\otimes\gcd(a_x\sima_y)\),其中$\otimes$是异或。我们先拆解询问,\(Ans=\sum_{x=1}^r\sum_{y=x}^ra_x\otimes\gcd(a_x\sima_y)-\sum_{x=1}^{l-1}\sum_{y=x}^ra_x\otimes\gcd(a_x\sima_y)\)然后离线处理一下......
  • EFZ暑训2023 挂分记录
    \(Day1\)\(20230731\):挂\(120pts\),\(120\to0\)(原因:Dev-C++保存炸了)\(Day2\)\(20230801\):挂\(60pts\),\(250\to190\)(原因:不能先pop再push)\(Day3\)\(20230802\):挂\(-20pts\),\(100\to120\)(原因:以为T180pts,实际100pts)\(Day4\)\(20230803\):挂......
  • 8.21 随笔记录
    高速CAN和低速CAN的区别高速CAN和低速CAN的物理层电气特性不一样,因此不能互相连接高速CAN主要应用于发动机、变速箱等实时性要求高的场合低速CAN主要应用于车身控制系统等可靠性要求高的场合CAN_H和CAN_L任意一根导线损坏,高速CAN收发失效,而低速CAN收有效,因此低速CAN的可靠性......
  • 2023.8.20
    因为昨晚熬夜了今天一睁眼就十点半了真的很震惊上午没做什么事但还是化了一个妆,粉底液很清透真的很加分!下午去上小学期,第一天多少有点新奇,其实教学楼比我想象的好多了!晚上又一起看了电视真的很开心!......
  • Webstorm 2023.2 最新安装教程(附激活码,亲测有效)
    前言WebStorm 是JetBrains公司旗下一款JavaScript开发工具。已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。它提供了许多功能,例如代码自动完成、错误突出显示、重构、调试、版本控制等,可以帮助开发人员提高效率和代码......