要求:写一段 SQL 语句,查询出每个学生参加每一门科目测试的次数,结果按 student_id 和 subject_name 排序。

学生表: Students的结构

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

科目表: Subjects的结构

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

考试表: Examinations的结构

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| student_id   | int     |
| subject_name | varchar |
+--------------+---------+
这张表压根没有主键,可能会有重复行。
学生表里的一个学生修读科目表里的每一门科目,而这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。

Students 表:

+------------+--------------+
| student_id | student_name |
+------------+--------------+
| 1          | Alice        |
| 2          | Bob          |
| 13         | John         |
| 6          | Alex         |
+------------+--------------+

Subjects 表:

+--------------+
| subject_name |
+--------------+
| Math         |
| Physics      |
| Programming  |
+--------------+

Examinations 表:

+------------+--------------+
| 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         |
+------------+--------------+

Result Table:

+------------+--------------+--------------+----------------+
| 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 次。

SQL语句:

select  c.student_id,c.student_name,c.subject_name,count(d.student_id) as attended_exams
from(
select distinct a.student_id,a.student_name,b.subject_name
from students a,subjects b)c
left join examinations d
on d.student_id=c.student_id and d.subject_name=c.subject_name
group by c.student_id,c.subject_name
order by c.student_id,c.subject_name;

LeetCode:Database 76.学生们参加各科测试的次数相关推荐

  1. LeetCode MySQL 1280. 学生们参加各科测试的次数

    文章目录 1. 题目 2. 解题 1. 题目 学生表: Students +---------------+---------+ | Column Name | Type | +----------- ...

  2. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨学生们参加各科测试的次数【难度简单】​

    [未来的你,会感谢今天努力的你]每日两题,一难一易,每天进步一点点,可能会直接导致一场面试的成功,或工作的轻松搞定,从而升职加薪迎娶白富美,加油小伙伴!

  3. 7-6 学生选课信息管理 分数 10

    7-6 学生选课信息管理 分数 10 全屏浏览题目 切换布局 作者 秦晓薇单位 赤峰学院 设计一个学生选课信息管理系统,从屏幕读入学生.课程信息,执行学生选课操作,并显示选课结果.要求如下: (1)设 ...

  4. LeetCode第76题:最小覆盖子串(困难)

    LeetCode第76题:最小覆盖子串(困难) 题目:给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 解题思路:我认为题干说的有点不明确,刚开始我以为只要 ...

  5. 学生信息管理系统之测试篇

    学生信息管理系统之测试篇 一.学生信息管理系统测试用例设计 二.使用selenium工具对项目进行自动化测试 2.1 测试登录功能及登录后的查询功能 2.2 测试列表页的增加用户和删除用户功能 2.3 ...

  6. 【LeetCode】76. 最小覆盖子串 (Java代码)

    [LeetCode]76. 最小覆盖子串 (Java代码) 来源:力扣(LeetCode) 题目链接:https://leetcode.cn/problems/minimum-window-subst ...

  7. 江苏省计算机学业水平测试模拟软件,基于江苏省普通高中物理学业水平测试的学生在线自主模拟测试系统研发...

    摘要: 项目反应理论(Item Response Theory)(简称IRT),相比于经典测量理论(Class Test Theory)(简称CTT),具有样本独立,可反复测量等诸多优势.随着计算机技 ...

  8. 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字

    [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...

  9. LeetCode MySQL 618. 学生地理信息报告(row_number)

    文章目录 1. 题目 2. 解题 1. 题目 一所美国大学有来自亚洲.欧洲和美洲的学生,他们的地理信息存放在如下 student 表中. | name | continent | |--------| ...

最新文章

  1. 初学flex时候搞得一个大头贴工具(开源)
  2. Codeforces Round #193 (Div. 2)
  3. -%3e运算符在c语言中的作用,C语言逻辑运算符知识整理
  4. c语言求出字符串最长单词,C语言-获取字符串中最长的单词.doc
  5. [蓝桥杯]算法提高 金属采集(树形dp)
  6. ubuntu14.04配置caffe
  7. wsadata wsadata;为什么不通过_注册公司之公司名称核准,知道为什么你的核名一直不通过吗?...
  8. pytorch WHAT IS TORCH.NN REALLY?
  9. 5分钟正则表达式,了解一下!
  10. 图像分类python代码_20行代码:Serverless架构下用Python轻松搞定图像分类
  11. MAC下的SVN工具
  12. 我在Linux开发板上跑的第一个Qt程序
  13. nginx+rtmp(或http-flv)+ffmpeg搭建流媒体视频直播服务器
  14. (4)ArcGIS 10.2 去除要素的Z值和M值
  15. 键盘输入圆的半径求圆的周长和面积
  16. Windows电脑怎么查看自己的电脑是64位的?
  17. 数十亿红包,正谋杀我们的春节
  18. 多元线性回归算法预测房价——Excel、jupyter+sklearn
  19. 【实践】haskell、coq基本语法
  20. connected components algorithm连通组件算法

热门文章

  1. 质因数的个数 - 九度教程第54题
  2. 我怀念,小时候的年味
  3. 计算机自主招生面试题,自主招生面试的自我介绍
  4. 工控安全下如何有效防勒索病毒措施分享
  5. Census Transform
  6. 常见的一些 x86 OS
  7. Roam Reserach 到底好在哪儿?
  8. 京东2022.9.3笔试三题
  9. 数字经济时代下如何满足多种云环境安全需求?
  10. 【机器学习】推荐系统、机器学习面试题整理