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

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

时间:2024-10-22 21:16:25浏览次数:7  
标签:sub 1280 grouped subject 次数 student 各科 id name

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

分析 + 实现

第一步:让学生表和科目表进行笛卡尔积

students 表

在这里插入图片描述

subjects 表

在这里插入图片描述

-- 学生表和科目表进行笛卡尔积
select
    *
from students s
cross join subjects sub;

在这里插入图片描述

第二步:使用考试表进行统计,查询每个学生每科测试次数

select
    student_id,
    subject_name,
    count(*) attended_exams
from examinations
group by student_id, subject_name;

在这里插入图片描述

第三步:将第一步的结果和第二步结果进行左连接

select
    *
from students s
cross join subjects sub
left join (
select
    student_id,
    subject_name,
    count(*) attended_exams
from examinations
group by student_id, subject_name
) grouped
-- 注意这里有两个条件
on s.student_id = grouped.student_id and sub.subject_name = grouped.subject_name;

在这里插入图片描述

第四步:查出想要的数据并进行排序

select
    s.student_id, s.student_name, sub.subject_name, ifnull(grouped.attended_exams, 0) attended_exams
from students s
cross join subjects sub
left join (
select
    student_id,
    subject_name,
    count(*) attended_exams
from examinations
group by student_id, subject_name
) grouped
on s.student_id = grouped.student_id and sub.subject_name = grouped.subject_name
order by student_id, subject_name;

在这里插入图片描述

在这里插入图片描述

总结

此题用到了我们很少使用的笛卡尔积,同时分组聚合再次用到

标签:sub,1280,grouped,subject,次数,student,各科,id,name
From: https://blog.csdn.net/qq_54889094/article/details/143168362

相关文章

  • PbootCMS后台登录提示登录失败:您登录失败次数太多已被锁定怎么办
    问题表现PbootCMS后台登录时提示“登录失败:您登录失败次数太多已被锁定”。原因由于多次登录失败,系统为了安全起见锁定了登录功能。解决方法删除根目录下的 runtime 文件夹。具体操作步骤1.使用FTP客户端连接到服务器打开FTP客户端:使用FTP客户端(如......
  • 3191. 使二进制数组全部等于 1 的最少操作次数 I
    给你一个二进制数组nums。你可以对数组执行以下操作任意次(也可以0次):选择数组中任意连续3个元素,并将它们全部反转。反转一个元素指的是将它的值从0变1,或者从1变0。请你返回将nums中所有元素变为1的最少操作次数。如果无法全部变成1,返回-1。示例......
  • pandas随笔(七)-- 统计文本中单词出现的次数(词频统计)
    题目描述编写解决方案,找出单词'bull'和'bear'作为独立词有出现的文件数量,不考虑任何它出现在两侧没有空格的情况(例如,'bullet','bears','bull.',或者'bear'在句首或句尾不会被考虑)。返回单词'bull'和'bear'以及它们对应的出现文件数量,顺序没有限制。测试用例输......
  • 例2.11_2首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数,注意get()方
    #利用collections模块的Counter()函数直接作出统计 #依次加载三个模块importstring,random,collectionsx=string.ascii_letters+string.digitsy=''.join([random.choice(x)foriinrange(1000)])count=collections.Counter(y)fork,vinsorted(count.items()):......
  • 2024-10-13:用go语言,给定一个二进制数组 nums,长度为 n, 目标是让 Alice 通过最少的行动
    2024-10-13:用go语言,给定一个二进制数组nums,长度为n,目标是让Alice通过最少的行动次数从nums中拾取k个1。Alice可以选择任何索引aliceIndex,如果对应的nums[aliceIndex]是1,Alice会拾取一个1并将其设为0。之后,Alice可以选择以下两种行动之一:将一个0变为1(最多执行maxCh......
  • 查看Github 发行版下载次数
    比如我在Github上开源了软件,并且在Release里面发布了版本,但是Githubrelease页面并没有下载统计次数的页面展示。下面列举的几个可以查看Release各个版本的下载量。1.https://somsubhra.github.io/github-release-stats/?username=hupo376787&repository=WeiboAlbumDownloader&......
  • 3158. 求出出现两次数字的 XOR 值
    给你一个数组nums,数组中的数字要么出现一次,要么出现两次。请你返回数组中所有出现两次数字的按位XOR值,如果没有数字出现过两次,返回0。示例1:输入:nums=[1,2,1,3]输出:1解释:nums中唯一出现过两次的数字是1。示例2:输入:nums=[1,2,3]输出:0解释:nums中没有数......
  • LeetCode:871. 最低加油次数(DP Java)
    目录871.最低加油次数题目描述:实现代码与解析:DP原理思路:871.最低加油次数题目描述:        汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,用数组 stations 表示。其中 stations[i]=[positioni,fueli] 表示第 ......
  • 使用鼠标点击矩阵上下左右的数字初始化为1 计算所需总共点击次数矩阵所有数字变成1的
    1importjava.util.ArrayList;23publicclassHuaweiTest2{4publicstaticvoidmain(String[]args){5//System.out.println("HelloWorld!");6}78publicstaticIntegergetMilliSecondsForInputInicialize......
  • pbootcms后台出现"登录失败:登录失败次数太多已被锁定,请600s重试!" 情况,怎么办?
    当在PBootCMS后台出现“登录失败:登录失败次数太多已被锁定,请600s重试!”的情况时,这通常是由于多次尝试错误密码导致的账户锁定。解决这个问题的方法如下:解决方法删除 runtime 文件夹:打开你的网站根目录。找到 runtime 文件夹并删除它。通常路径为:/www/wwwroot/you......