首页 > 其他分享 >1280. 学生们参加各科测试的次数

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

时间:2023-07-01 21:12:28浏览次数:46  
标签:1280 测试 name 次数 student 各科 id Math subject

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

SQL架构

学生表: 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 |
+--------------+---------+
这张表压根没有主键,可能会有重复行。
学生表里的一个学生修读科目表里的每一门科目,而这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。

 

要求写一段 SQL 语句,查询出每个学生参加每一门科目测试的次数,结果按 student_idsubject_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         |
+------------+--------------+
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 次。
SELECT
    s.student_id,
    s.student_name,
    su.subject_name,
   COUNT(e.subject_name) AS attended_exams
FROM
    Students AS s
inner 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

 

标签:1280,测试,name,次数,student,各科,id,Math,subject
From: https://www.cnblogs.com/fulaien/p/17519923.html

相关文章

  • EXCEL中统计单元格内容出现次数
    1、参考网站:https://jingyan.baidu.com/article/7c6fb428dfcc9580642c90ae.html2、excel如何将公式计算结果转换成纯数字https://jingyan.baidu.com/article/c1a3101e7d8a90de656deb05.html 3、按分隔符,分割列https://zhidao.baidu.com/question/557029157.html  *************......
  • 信捷XD XC系列PLC 控制台达B2系列伺服电机程序,手动自动,循环,循环次数设定
    信捷XDXC系列PLC控制台达B2系列伺服电机程序,手动自动,循环,循环次数设定原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/620589573989.html......
  • m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要异构网络垂直切换是指在不同的移动通信网络之间进行快速自适应切换的技术。在异构网络中,不同类型的网络可能具有不同的带宽、延迟、信号强度等性能指标,因此在不同的应用场景下,需要采用不同的网络来实现最佳的通信......
  • m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,
    1.算法仿真效果matlab2022a仿真结果如下:      2.算法涉及理论知识概要       异构网络垂直切换是指在不同的移动通信网络之间进行快速自适应切换的技术。在异构网络中,不同类型的网络可能具有不同的带宽、延迟、信号强度等性能指标,因此在不同的应用场景......
  • 1207. 独一无二的出现次数
    给你一个整数数组arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回true;否则返回false。示例1:输入:arr=[1,2,2,1,1,3]输出:true解释:在该数组中,1出现了3次,2出现了2次,3只出现了1次。没有两个数的出现次数相同。>代码class......
  • 【LeetCode摩尔投票】有趣的简单题:数组中出现次数超过一半的数字
    数组中出现次数超过一半的数字https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[1,2,3,......
  • 【剑指Offer】37、数字在排序数组中出现的次数
    【剑指Offer】37、数字在排序数组中出现的次数题目描述:统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于数字3在该数组中出现了4次,所以函数返回4。解题思路:既然输入的数组是有序的,所以我们就能很自然的想到用二分查找算法。以题目中给的数......
  • mockito5.4.0单元测试(5) --校验mock对象的某种方法的准确调用次数
     mokito官方文档地址:https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#exact_verification//mock一个对象LinkedListmockedList=mock(LinkedList.class);//使用mock对象来操作mockedList.add("once");//添加"once"一次......
  • 【寒假每日一题】AcWing 3400. 统计次数(补)
     目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解 一、题目1、原题链接3400.统计次数-AcWing题库2、题目描述给定两个正整数 n 和 k,求从 1 到 n 这 n 个正整数的十进制表示中 k 出现的次数。输入格式共一行,包含两个整数 n ......
  • 51nod-1280 前缀后缀集合
    原题链接1280 前缀后缀集合题目来源: Codility基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题 收藏 关注一个数组包含N个正整数,其中有些是重复的。一个前缀后缀集是满足这样条件的下标对(P,S),0<=P,S......