数据库的嵌套查询(子查询),分组查询和统计查询—学生选课

学生选课数据库中的表的结构参考学生选课数据库的定义和维护

1.嵌套查询

1.1查询选修了'数据库原理与应用'课程的学生学号和姓名

SELECT sno 学号, sname 姓名
FROM student
WHERE sno IN(SELECT snoFROM SCINNER JOIN Course c ON c.cno = SC.cno AND c.cname = '数据库原理与应用')

1.2查询比'王华'同学年龄大的学生的学号和姓名

SELECT sno 学号, sname 姓名
FROM student
WHERE sage>(SELECT max(sage)FROM studentWHERE sname='王华')

1.3查询选修'数据库原理与应用'的成绩低于'张三'的学生的学号和成绩

SELECT sno 学号, grade 成绩
FROM SC
INNER JOIN Course c ON SC.cno = c.cno AND c.cname = '数据库原理与应用'
WHERE grade <(SELECT SC.gradeFROM SCINNER JOIN Course c ON SC.cno = c.cno AND c.cname = '数据库原理与应用'INNER JOIN student s ON SC.sno = s.sno AND s.sname = '王华')

1.4查询其他学员中比数计学院学生年龄都小的学生

SELECT *
FROM student
WHERE sdept != '数学与计算机科学学院' ANDsage<(SELECT MIN(sage)FROM studentWHERE sdept = '数学与计算机科学学院')

1.5查询选修'数据库原理与应用'课程的学生姓名

SELECT sname
FROM student
WHERE sno IN(SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cno AND c.cname = '数据库原理与应用')

1.6查询选修了全部课程的学生姓名

SELECT sname 姓名
FROM student
WHERE sno IN(SELECT snoFROM SCGROUP BY SC.snoHAVING COUNT(*) =(SELECT COUNT(*)FROM Course))

1.7查询至少选修了'2024010002'学生所选修课中一门课程的学生的学号和姓名

SELECT DISTINCT s.sno 学号, sname 姓名
FROM student s
INNER JOIN SC ON SC.sno = s.sno
WHERE SC.cno = ANY(SELECT cnoFROM SCWHERE sno='2024010002')

1.8查询至少选修了'2024010002'学生所选修课的全部课程的学生的学号和姓名

SELECT s.sno 学号, sname 姓名
FROM student s
WHERE NOT EXISTS(SELECT *FROM SC sc1WHERE sc1.sno='2024010002' ANDNOT EXISTS(SELECT *FROM SC sc2WHERE s.sno = sc2.sno ANDsc2.cno = sc1.cno))

1.9查询既选修了'数据结构'又选修了'数据库原理与应用'课程的学生姓名

SELECT sname 姓名
FROM student s
WHERE sno IN(SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cnoWHERE c.cname = '数据结构' ANDs.sno IN (SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cnoWHERE c.cname = '数据库原理与应用') )

1.10查询选修了'数据结构'或选修了'数据库原理与应用'课程的学生学号

SELECT sno 学号
FROM student
WHERE sno IN(SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cnoWHERE c.cname = '数据结构' OR c.cname = '数据库原理与应用')

1.11查询选修了'数据结构'而没有选修'数据库原理与应用'课程的学生学号

SELECT sname 姓名
FROM student s
WHERE sno IN(SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cnoWHERE c.cname = '数据结构' ANDs.sno NOT IN (SELECT snoFROM SCINNER JOIN Course c ON SC.cno = c.cnoWHERE c.cname = '数据库原理与应用') )

1.12查询全是男同学选修的课程号

SELECT cno 课程号
FROM Course
WHERE cno NOT IN(SELECT cnoFROM SCINNER JOIN student s ON s.sno = SC.snoWHERE ssex = '女')

2.分组查询和统计查询

2.1使用集合运算查询选修了'数据结构'或选修了'数据库原理与应用'课程的学生学号

SELECT sname 姓名
FROM student s
INNER JOIN SC ON SC.sno = s.sno
INNER JOIN Course c ON c.cno = SC.cno
WHERE c.cname = '数据结构'
UNION
SELECT sname 姓名
FROM student s
INNER JOIN SC ON SC.sno = s.sno
INNER JOIN Course c ON c.cno = SC.cno
WHERE c.cname = '数据库原理与应用'

2.2统计选修了课程的学生人数

SELECT COUNT(DISTINCT sno) 总人数
FROM sc

2.3查询选修成绩合格, 并且选课门次超过4门以上学生的学号和总成绩

SELECT sno, SUM(grade) 总成绩
FROM SC
GROUP BY sno
HAVING COUNT(*) > 4 AND MIN(grade) >= 60

2.4统计各院系的学生人数

SELECT sdept 院系, COUNT(*) 总人数
FROM student
GROUP BY sdept

2.5统计各年龄的学生人数

SELECT sage 年龄, COUNT(*) 总人数
FROM student
GROUP BY sage

2.6统计每个学生的选修课程数目和平均成绩

SELECT sno 学号, COUNT(sno) 选课数目, AVG(grade) 平均成绩
FROM SC
GROUP BY sno

2.7查询每门课程的详细信息及选修人数

SELECT c.*, COUNT(DISTINCT sno) 选课人数
FROM Course c
LEFT JOIN SC ON SC.cno = c.cno
GROUP BY c.cno, c.cname, c.ccredit, c.cpno

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qml之text

显示字体 Text {text: "The quick brown fox"color: "#303030"font.family: "Ubuntu"font.pixelSize: 28x:200y:200}Text {width:84elide: Text.ElideMiddle y:text1.ytext1.height20text: "一个很长很长的句子 !!!!!!!!!!"style…

全新神经网络架构KAN一夜爆火!200参数顶30万,MIT华人一作 | 最新快讯

白交衡宇发自凹非寺 量子位公众号 QbitAI 一种全新的神经网络架构 KAN&#xff0c;诞生了&#xff01; 与传统的 MLP 架构截然不同&#xff0c;且能用更少的参数在数学、物理问题上取得更高精度。 比如&#xff0c;200 个参数的 KANs&#xff0c;就能复现 DeepMind 用 30 万参数…

Linux 进程间通信之匿名管道

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言 一. 进程间通信介绍 1.进程间通…

C#知识|WinForm项目结构Partial部分类与窗体控件介绍

哈喽,你好啊,我是雷工! 在我国上位机开发,医院里的HIS开发、ERP开发、很多二次开发、GIS开发等,相当一部分都是由C#开发的。 目前很多企业应用是C/S+B/S架构,WinForm作为经典的框架,还是很有必要学习的,特别是对于初学者比较友好。 要想学好WinForm需要着重以下几个方面…

遍历JavaScript对象(字典)

在JavaScript中&#xff0c;对象通常被用来作为字典使用&#xff0c;因为它们是由键值对组成的。当我们需要遍历这些键值对时&#xff0c;有几种常用的方法。 使用for...in循环 for...in循环是JavaScript中用于遍历对象属性的常用方式。它会遍历对象所有可枚举的属性&#xf…

【linuxC语言】stat函数

文章目录 前言一、stat函数二、示例代码总结 前言 在Linux系统编程中&#xff0c;stat() 函数是一个非常重要的工具&#xff0c;用于获取文件的元数据信息。无论是在系统管理、文件处理还是应用开发中&#xff0c;都可能会用到 stat() 函数。通过调用 stat() 函数&#xff0c;…

AI视频教程下载:用ChatGPT提示词开发AI应用和GPTs

在这个课程中&#xff0c;你将深入ChatGPT的迷人世界&#xff0c;学习如何利用其能力构建创新和有影响力的工具。你将发现如何创建不仅吸引而且保持用户参与度的应用程序&#xff0c;将流量驱动到你的网站&#xff0c;并开辟新的货币化途径。 **课程的主要特点&#xff1a;** …

Hive优化以及相关参数设置

1.表层面设计优化 1.1 表分区 分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹&#xff0c;该文件夹下是该分区所有的数据文件。Hive 中的分区就是分目录&#xff0c;把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要…

抖音小店运营实战班,全新升级 从零到进阶精通 分享月销百万小店核心秘密

课程内容&#xff1a; 1 2024抖音电商发展趋势及抖店运营策略(直播2024 0412).mp4 2 1-1抖音小店入驻流程(直播2024 04 12),mp4 3 1-2个体店铺VS企业店铺有什么区别(直播20240412).mp4 4 1-3抖音小店店铺搭建(直播2024 04 12).mp4 5 2-1-如何避免违禁词(附违禁词大全)(直播…

微软如何打造数字零售力航母系列科普07 - Azure PlayFab:你从未想过的世界上最大的开发工具(平台)

Azure PlayFab&#xff1a;你从未想过的世界上最大的开发工具 微软的James Gwertzman告诉GamesIndustry.biz Academy他帮助开发者成功的使命 制作游戏比以往任何时候都更容易上手。现在有无数的游戏引擎可供选择&#xff0c;其中大多数是免费的&#xff0c;PC空间的店面也同样重…

链表经典面试题上

目录 创作不易&#xff0c;如若对您有帮助&#xff0c;还望三连&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 题目一&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 题目二&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff…

python学习笔记----安装pycharm(1)

一、安装pycharm 1. 下载并安装pycharm https://www.jetbrains.com/pycharm/download2.汉化pycharm 安装插件并重启IDE完成汉化 二、 第一个python程序

【机器学习】机器学习在教育领域的应用场景探索

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【设计模式】17、iterator 迭代器模式

文章目录 十七、iterator 迭代器模式17.1 user_slice17.1.1 collection_test.go17.1.2 collection.go17.1.3 iterator.go17.1.4 user.go 十七、iterator 迭代器模式 https://refactoringguru.cn/design-patterns/iterator 为了集合数据的安全性, 或方便迭代, 可以用迭代器接口…

axios 中文文档 翻译

0.18.0的版本更新有一段时间了&#xff0c;使用起来跟原先基本没有什么变化。但是增加了一些功能&#xff0c;例如错误处理的辨别&#xff0c;于07-06-2018重新翻译和校验了该翻译&#xff0c;更正了一些错别字和表达不准的地方&#xff0c;但是难免仍有错误&#xff0c;欢迎指…

GitLab服务器的搭建

GitLab服务器的搭建 为公司搭建一台代码托管服务器 服务器规格&#xff1a;2vCPUs4GiB20G 操作系统&#xff1a;RockyLinux8.8 下载软件 gitlab官网&#xff1a;http://about.gitlab.com 在官网下载比较麻烦&#xff0c;推荐从《清华大学开源软件镜像站》下载 清华大学开…

DRF序列化器基本使用

DRF序列化器基本使用 对用户提交的数据进行校验从数据库中取到数据进行序列化&#xff0c;转化为JSON格式返还给前端 1 序列化数据 1.1 Serializer # models.py from django.db import modelsclass Depart(models.Model):"""部门表"""title …

[前端] Bearer令牌

Bearer令牌是一种常用的认证方式&#xff0c;特别是在实现OAuth 2.0协议时。Bearer令牌本质上是一个安全字符串&#xff0c;可以是任意的字符序列&#xff0c;用以证明持有者&#xff08;Bearer&#xff09;有权访问特定的资源。其名称“Bearer”意味着任何持有该令牌的人都可以…

38-3 Web应用防火墙 - 安装配置WAF

首先需要安装Centos 7 虚拟机:Centos7超详细安装教程_centos7安装教程-CSDN博客 安装配置WAF 在桌面环境中,右键点击打开终端,首先执行以下步骤: 1)安装必要的工具: 输入命令: sudo su yum install -y wget epel-release 2)第二步,安装依赖工具,输入以下命令: y…

阿里云CentOS7 打开/关闭防火墙 开放端口

#查看防火墙状态# systemctl status firewalld #关闭防火墙# systemctl stop firewalld #打开防火墙# systemctl start firewalld #添加开放2375端口# firewall-cmd --add-port2375/tcp --permanent #重载入添加的端口# firewall-cmd --reload #查询2375端口是否开启成…