【SQL Server数据库】带函数查询和综合查询(2)

news2024/9/20 5:49:03

目录

1.检索至少选修课程“数据结构”和“C语言”的学生学号。

2.列出所有班名、班主任、班长、系名。

3.没有选修以“01”开头的课程的学生学号,姓名,选课的课程号。

4. 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。

5. 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。

6. 检索选修了‘0103’和‘0105’两门课程,并且‘0103’这门课程成绩高于‘0105’的学生的学号。

7. 检索选修了课程“数据结构”和“C语言”两门课程并且“数据结构”分数高于“C语言”的学生学号和姓名。

小结


1.检索至少选修课程“数据结构”和“C语言”的学生学号

-- 交集

select Stu_id

from StudentGrade

where Course_id in (select Course_id from Course where Course_name = '数据结构')

intersect

select Stu_id

from StudentGrade

where Course_id in (select Course_id from Course where Course_name = 'C语言');



-- 自连接:同一个学生,第一列科目是数据结构,第二列是c语言

select sg1.Stu_id

from StudentGrade sg1,

     StudentGrade sg2

where sg1.Course_id = (select Course_id from Course where Course_name = '数据结构')

  and sg2.Course_id = (select Course_id from Course where Course_name = 'C语言')

  and sg1.Stu_id = sg2.Stu_id;

2.列出所有班名、班主任、班长、系名。

(请使用连接查询;进一步考虑使用外连接,因为很多班级可能是没有班长的,考虑需要显示所有班级的信息)

select c.Class_name, t.Teac_name, s.Stu_name, d.Depar_name

from Class c,

     Teacher t,

     Student s,

     Deparment d

where c.Depar_id = d.Depar_id

  and c.Director = t.Teac_id

  and c.Monitor = s.Stu_id;

-- 左外连接(显示没有班长的班级)

select c.Class_name, t.Teac_name, s.Stu_name, d.Depar_name

from Class c

         left join Deparment d on c.Depar_id = d.Depar_id

         left join Teacher t on c.Director = t.Teac_id

         left join Student s on c.Monitor = s.Stu_id;

3.没有选修以“01”开头的课程的学生学号,姓名,选课的课程号。

(用子查询完成,提示not in或not exists。需考虑没选课的学生仔细对比上一篇博客第5题

【SQL Server数据库】带函数查询和综合查询(1)-CSDN博客

-- not exists

select s.Stu_id, s.Stu_name, sg.Course_id

from Student s

         left join StudentGrade sg on s.Stu_id = sg.Stu_id

where not exists(select sg.Stu_id

                 from StudentGrade sg

                 where sg.Course_id like '01%'

                   and s.Stu_id = sg.Stu_id)

-- not in

select s.Stu_id, s.Stu_name, sg.Course_id

from Student s

         left join StudentGrade sg on s.Stu_id = sg.Stu_id

where s.Stu_id not in (select sg.Stu_id

                       from StudentGrade sg

                       where sg.Course_id like '01%')

4. 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程

提示:可以使用TOP 3

select TOP 3 c.Course_name, count(sg.Course_id) '选修人数'

from Course c

         left join StudentGrade sg on

    c.Course_id = sg.Course_id

group by c.Course_name

ORDER BY count(c.Course_id) desc;

5. 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程

上述使用TOP 3,不能处理人数并列的情况。试考虑一种方法处理人数并列的情况。)

select c.Course_name, count(sg.Course_id) '选修人数'

from Course c

         left join StudentGrade sg on

    c.Course_id = sg.Course_id

group by c.Course_name

having count(sg.Course_id) in (select distinct TOP 3 count(sg.Course_id) '选修人数'

                                     from Course c

                                              left join StudentGrade sg on

                                         c.Course_id = sg.Course_id

                                     group by c.Course_name

                                     ORDER BY count(sg.Course_id) desc

                               )

order by count(sg.Course_id) desc;

6. 检索选修了‘0103’和‘0105’两门课程,并且‘0103’这门课程成绩高于‘0105’的学生的学号。

select sg1.Stu_id

from StudentGrade sg1,

     StudentGrade sg2

where sg1.Course_id = '0103'

  and sg2.Course_id = '0105'

  and sg1.Stu_id = sg2.Stu_id

  and sg1.Grade > sg2.Grade;

7. 检索选修课程“数据结构”和“C语言”两门课程并且“数据结构”分数高于“C语言”的学生学号和姓名。

select distinct sg1.Stu_id, s.Stu_name

from StudentGrade sg1,

     StudentGrade sg2,

     Student s

where sg1.Course_id = (select Course_id from Course where Course_name = '数据结构')

  and sg2.Course_id = (select Course_id from Course where Course_name = 'C语言')

  and sg1.Grade > sg2.Grade

  and sg1.Stu_id = sg2.Stu_id

  and sg1.Stu_id = s.Stu_id;

小结

在查询的过程需注意表格之间的关系,是否需要外连接,显示一些其他信息。

通过第四题和第五题对TOP 3的含义更加清晰了,返回的是按某个条件排序后的前三条结果。在 SQL Server 中,可以使用 TOP 子句来限制返回的行数,并使用 ORDER BY 子句进行排序

通过第六题和第七题,我更加深刻的理解了表的自连接查询表的自连接查询是指在同一张表中进行连接操作,将表中的不同行作为两个独立的实例进行比较和匹配。这种技术常用于处理具有层级结构的数据或者在一个表中存储了相关的信息。要进行自连接查询,可以使用表的别名来创建两个表的副本,并通过别名进行连接

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

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

相关文章

Linux-磁盘管理与文件系统

目录 一、磁盘结构 1、磁盘的物理结构 2、磁盘的数据结构 3、磁盘存储容量 4、接口类型 二、磁盘分区 1、磁盘的两种分区方式 1.1、MBR分区 1.2、GPT分区 三、查看硬盘的分区情况 1、Fdisk—查询磁盘设备 2、lsblk—以树形查看磁盘分区 3、blkid—查看磁盘的UUID …

eNSP中静态NAT和动态NAT的配置和使用

一、静态NAT 1.拓扑图 a.新建拓扑图 b.PC端配置 PC1: PC2&#xff1a; c.路由器配置 AR1: <Huawei>system-view [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/0]quit…

浏览器提升编译速度小技巧(二)- 使用Dev Drive

1. 引言 在浏览器开发过程中&#xff0c;编译速度对开发效率有着重要影响。对于大型项目如Chrome和Firefox&#xff0c;编译时间的长短不仅关系到开发进度&#xff0c;还直接影响开发者的工作体验。为了提升编译速度&#xff0c;开发者需要不断探索和应用各种优化技巧。 Wind…

Stable Diffusion【真人模型】:人像光影摄影极限写实真实感大模型

大家好&#xff0c;我是极客菌 今天和大家分享一个基于SD1.5的真人大模型&#xff1a;人像光影摄影极限写实真实感大模型。 该模型具有以下特点&#xff1a; 真实肤感&#xff08;在面部肌理和皮肤肌理上均有加强学习&#xff0c;拒绝ai出图假的问题&#xff09; 永不脱妆&a…

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持

【机器学习】图神经网络(NRI)模型原理和运动轨迹预测代码实现

1.引言 1.1.NRI研究的意义 在许多领域,如物理学、生物学和体育,我们遇到的系统都是由相互作用的组分构成的,这些组分在个体和整体层面上都产生复杂的动态。建模这些动态是一个重大的挑战,因为往往我们只能获取到个体的轨迹数据,而不知道其背后的相互作用机制或具体的动态…

亚马逊卖家为何需要自养账号?揭秘背后的原因

亚马逊是一家极为重视用户体验的国际电商平台&#xff0c;因此用户的评论和星级评价对店铺排名影响深远。平台审核评论非常严格&#xff0c;这些评价直接影响商品在平台上的生存和发展。 在亚马逊上&#xff0c;用户的评分和评论对商品的成功至关重要。好评多的商品通常被认为优…

docker容器相关命令

☆ 问题描述 docker容器相关命令 ★ 解决方案 1. 拉取镜像 docker pull ubuntu2.查看镜像是否拉取成功 docker images3. 运行容器 docker run -itd --name <容器名称> -p <主机端口>:<容器端口> --cpus30 ubuntu # -p设置端口 --cpus/-c 设置核心 …

【CPP】插入排序:直接插入排序、希尔排序

目录 1.插入排序1.1直接插入排序简介代码分析 1.2直接插入对比冒泡排序简介代码对比分析(直接插入排序与冒泡的复杂度效率区别) 1.3希尔排序简介代码分析 1.插入排序 基本思想&#xff1a;把一个待排数字按照关键码值插入到一个有序序列中&#xff0c;得到一个新的有序序列。 …

Python学习笔记19:进阶篇(八)常见标准库使用之glob模块和argparse模块

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 这里贴一下教程地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/stdlib.h…

执行shell脚本出现 $‘ \r‘ 符号导致执行失败【解决】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

mprpc框架基础类的设计

目录 1.回顾 2.主函数书写 3.框架设计 3.1 mprpcapplication.h 3.2 rpcprovider.h 3.3 mprpcapplication.cc 3.4 mprpcprovider.cc 1.回顾 mprpc框架怎么用&#xff1f; 在上一节&#xff0c;我们完成了如何把本地服务发布成RPC服务。 我们打开example下callee下的users…

制造业ERP五大生产模式详解!

制造业面临着从成本控制、生产效率到供应链管理的挑战&#xff0c;每一个环节都需要精细化的管理和高效的协同。而ERP系统&#xff0c;作为一种集信息技术与管理思想于一体的管理工具&#xff0c;正逐渐成为制造业转型升级的关键。那么&#xff0c;通过本文你将会了解到&#x…

某某商场对账返款单,table

好久不写原生html&#xff0c;今天写了个&#xff0c;快忘完了 。。。 Double Header Table ***商场统一收银结算商户对账返款单 商场&#xff08;盖章有效&#xff09; 铺位名称&#xff1a; 铺位号&#xff1a; 制单人&#xff1a; 制单日期&#xff1a; </tr><tr&…

智慧社区:居民幸福生活的保底线,价值非常大。

大屏应该能够显示社区内的关键数据&#xff0c;如人流量、车辆数量、垃圾分类情况等。这些数据可以通过图表、数字、地图等形式展示&#xff0c;以便居民和管理者能够直观地了解社区的情况。 智慧社区可视化大屏成为一个有益于社区管理和居民生活的工具&#xff0c;提供实时、准…

北京互动阅读app开发,“身”临其境,阅读精彩

随着大数据与智能化的不断发展进步&#xff0c;线上阅读软件也越来越多&#xff0c;为了缓解对传统翻页阅读方式产生的疲劳&#xff0c;人们对线上阅读提出了新的要求。对此&#xff0c;与智能科技相结合的北京互动阅读app开发&#xff0c;以高互动、高体验感的优势&#xff0c…

Casaos之qittorrent设置(没有账号密码)

点击安装只有没有账号密码&#xff0c;只能从运行日志中找密码&#xff1a; # 查看container docker ps -a # 查看container日志 docker logs ae15cb90afbd 进入系统 最下方&#xff0c;保存。

solidity智能合约如何实现跨合约调用函数

背景 比如现在有一个需求、我需要通过外部合约获取BRC20 token的总交易量。那么我需要在brc20的转账函数里面做一些调整&#xff0c;主要是两个函数内统计转移量。然后再提供外部获取函数。 /*** dev Sets amount as the allowance of spender over the callers tokens.** Ret…

从SRE视角透视DevOps的构建精髓

SRE 侧重系统稳定性&#xff0c;DevOps 强调开发运维协作。SRE 实践助力DevOps&#xff0c;提升系统稳定性与团队协作效率。 SRE 运用软件工程的原理&#xff0c;将系统管理员的手工任务自动化&#xff0c;负责运维由系统组件构成的服务&#xff0c;确保服务稳定运行。SRE职责涵…

全国计算机等级考试WPS如何报名

全国计算机等级考试WPS如何报名&#xff1f; 注册并登录 全国计算机等级考试官网选择 考试服务-在线报名选择报考省份-开始报名