SQL实验 带函数查询和综合查询

news2024/10/3 22:17:06

一、实验目的

1.掌握Management Studio的使用。

2.掌握带函数查询和综合查询的使用。

二、实验内容及要求

1.统计年龄大于30岁的学生的人数。

--统计年龄大于30岁的学生的人数。

SELECT COUNT(*) AS 人数

FROM Student

WHERE (datepart(year,getdate())-datepart(year,Birthday))>30

2.统计数据结构有多少人80分或以上。

--统计数据结构有多少人80分或以上。

SELECT COUNT(*) AS 人数

FROM StudentGrade

WHERE Course_id IN(SELECT Course_id

FROM Course

WHERE Course_name='数据结构'

)

AND Grade>80

3.查“0203”课程的最高分的学生的学号。(请分别用TOP1和函数来进行查询,并分析它们的区别)

--查询“0203”课程的最高分的学生的学号。(请分别用TOP1和函数来进行查询,并分析它们的区别)

--Top 1

SELECT Top 1 Stu_id

FROM StudentGrade

WHERE Course_id='0203'

--Max 函数

SELECT Stu_id

FROM StudentGrade

WHERE Grade=(SELECT Max(Grade) FROM StudentGrade)

AND Course_id='0203'

4.统计各系开设班级的数目(系名称、班级数目),并创建结果表。(需考虑没有班级的系)

--统计各系开设班级的数目(系名称、班级数目),并创建结果表。(需考虑没有班级的系)

select Depar_name as 系名称,count(*) as 班级数目 into DeparNumber

from Deparment LEFT JOIN Class ON Deparment.Depar_id=Class.Depar_id

group by Depar_name

5.统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。(TOP 3,但不能处理人数并列的情况。试考虑更好的方法。)

--统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。(TOP 3,但不能处理人数并列的情况。试考虑更好的方法。)

--Top 3

SELECT Top 3 Course_id ,COUNT(*) AS 选修人数

FROM StudentGrade

GROUP BY Course_id ORDER BY 选修人数 DESC

--优化方案
--内部查询首先在选课表中进行分组,按照课程编号计算每门课程的选修人数,并使用 RANK() 窗口函数为每个课程编号进行排名,从而获得对应的排名号。

--外部查询该查询从内部查询的结果集(被命名为结果表)获取每门课程的编号和选修人数,并选择排名前三名的课程数据输出。

SELECT Course_id

FROM (SELECT Course_id,COUNT(*) AS 选修人数,

RANK() OVER (ORDER BY COUNT(*) DESC) AS 名次

FROM StudentGrade

GROUP BY Course_id) AS 结果表

WHERE 结果表.名次<=3

6.统计每科目的最高分、最低分,平均分、总分,并以中文列名显示。

--统计每科目的最高分、最低分,平均分、总分,并以中文列名显示。

SELECT

Course.Course_name AS 学科,

MAX (StudentGrade.Grade) AS 最高分,

MIN (StudentGrade.Grade) AS 最低分,

AVG (StudentGrade.Grade) AS 平均分,

SUM (StudentGrade.Grade) AS 总分

FROM Course JOIN StudentGrade ON Course.Course_id=StudentGrade.Course_id

GROUP BY Course.Course_name

7【选做】所有成绩都在70分以上的学生姓名(提示:使用子查询。需考虑未选课的学生)

--【选做】所有成绩都在70分以上的学生姓名(提示:使用子查询。需考虑未选课的学生)。

--这里使用了子查询来查找未选课的学生,并过滤掉成绩低于70分的学生。如果没有任何一门成绩低于70分,则该学生将被返回

SELECT Student.Stu_name

FROM Student

WHERE NOT EXISTS (

    SELECT *

    FROM StudentGrade

    WHERE StudentGrade.Stu_id = Student.Stu_id AND StudentGrade.Grade < 70

)

8【选做】“数据库”课程得最高分的学生的学号、姓名和所在系
 

--【选做】“数据库”课程得最高分的学生的学号、姓名和所在系。

--材料无“数据库”将其改为“数据库原理”

SELECT Top 1 Student.Stu_id,Student.Stu_name,Depar_name

FROM Student JOIN StudentGrade ON Student.Stu_id=StudentGrade.Stu_id

JOIN Class ON Class.Class_id=Student.Class_id

JOIN Deparment ON Class.Depar_id=Deparment.Depar_id

JOIN Course ON StudentGrade.Course_id=Course.Course_id

WHERE Course_name='数据库原理'

GROUP BY Student.Stu_id,Student.Stu_name,Depar_name

ORDER BY MAX(StudentGrade.Grade)DESC

9【选做】至少选修了两门课及以上的学生姓名和性别
 

--【选做】至少选修了两门课及以上的学生姓名和性别。
--内部子查询先对学生进行分组(GROUP),并求出(COUNT)每个学生选修不同科目的数量,再(HAVING)筛出符合条件的学生

SELECT DISTINCT Stu_name ,Stu_sex

FROM Student JOIN StudentGrade ON Student.Stu_id=StudentGrade.Stu_id

JOIN Course ON StudentGrade.Course_id=Course.Course_id

WHERE Student.Stu_id IN (

    SELECT StudentGrade.Stu_id

    FROM StudentGrade

    GROUP BY StudentGrade.Stu_id

    HAVING COUNT(DISTINCT StudentGrade.Course_id) >= 2

)

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

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

相关文章

python语言中循环语句的小结

如上图所示&#xff0c;在C/C/Java中如果使用的for循环语句和do while语句都与python中的while循环语句类似&#xff0c;所以在C/C/Java中如果使用的for循环语句在python中可以用while语句来替换。

python批量调整word含有关键字句子样式

代码&#xff1a; from docx import Document from docx.shared import RGBColor obj Document(装机必读调整样式.docx) word 软件 def set_run(run):#设置run的字体大小、是否加粗以及字体颜色run.font.size font_sizerun.bold boldrun.font.color.rgb color for p in obj.…

小型气象站—农田环境进行气象监测

TH-QC8小型气象站在农田环境进行气象监测的应用非常广泛&#xff0c;它能够提供准确、及时的气象数据&#xff0c;为农业生产提供有力的支持。以下是关于小型气象站在农田环境气象监测中的具体应用和相关特点&#xff1a; 小型气象站能够实时监测农田环境中的气象参数&#xff…

实战经验:升级主键类型为 BigInt 的应用程序兼容性保证文章:

在数据库设计和应用开发中&#xff0c;主键的类型选择至关重要。当需要处理更大数据量或提升数据完整性时&#xff0c;将主键类型从其他类型升级为 BigInt 是一种常见做法。然而&#xff0c;这可能会导致应用程序的兼容性问题。以下是确保应用程序完美兼容的一些实战经验。 文档…

HarmonyOS(31) @Prop标签使用指南

Prop Prop简介State和Prop的同步场景使用示例参考资料 Prop简介 子组件中Prop装饰的变量可以和父组件建立单向的同步关系。子组件Prop装饰的变量是可变的&#xff0c;但是变化不会同步回其父组件。Prop变量允许子组件修改&#xff0c;但修改后的变化不会同步回父组件。当父组件…

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件&#xff0c;打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1&#xff09;、软件版本&#xff1a;keil μvision…

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中&#xff0c;内连接是多表查询的一种方式&#xff0c;但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式&#xff0c;而多表查询是一个更…

微服务开发与实战Day02 - Docker

一、Docker快速入门 快速构建、运行、管理应用的工具 安装部署教程&#xff1a;Docs 1. 部署MySQL 测试连接&#xff1a; 镜像和容器 当我们利用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像&#xff08;image&#xff09;。镜像不仅包含应用本身&#xff…

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班&#xff01;小班教学&#xff01;目前还有3个名额&#xff0c;招满为止&#xff01;有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课&#xff01; 这个课程支持升级成双核A…

LeetCode322.零钱兑换

文章目录 题目描述解题思路递归记忆化搜索动态规划另一种实现 题目描述 https://leetcode.cn/problems/coin-change/description/?envTypestudy-plan-v2&envIdtop-interview-150 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount …

【全开源】废品回收垃圾回收小程序APP公众号源码PHP版本

&#x1f31f;废品回收小程序&#xff1a;绿色生活的新助手&#x1f331; 一、引言 随着环保意识的逐渐提高&#xff0c;废品回收成为了我们日常生活中的重要一环。但是&#xff0c;如何更方便、高效地进行废品回收呢&#xff1f;今天&#xff0c;我要向大家推荐一款超级实用的…

UE4获取动画序列资产的动画时长

谢谢”朝闻道“大佬的指点~

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第6章——级数

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 6. 级数(Series) 本章从等比级数(geometric series)开始&#xff0c;研究可以使用公式计算无限和的条件。它讨论了部分和与级数收敛的符号、图形表示和定义&#xff0c;并将它们应用于调和级数。它介绍了级…

从提示工程到代理工程:构建高效AI代理的策略框架概述

自ChatGPT推出以来&#xff0c;仅仅一年多的时间里&#xff0c;公众对于“人工智能”&#xff08;AI&#xff09;的认识已经发生了根本性的变化。这种变化部分源于公众意识的提高&#xff0c;更多则是基于这样一个认识&#xff1a;AI驱动的系统不仅可能&#xff0c;而且可能已经…

靠AI创意,我已经变现20w!

之前我一直在各个平台&#xff0c;分享各类的 AI 工具&#xff0c;但单纯地为了学而学&#xff0c;是没有任何意义的。 这些 AI 工具&#xff0c;学会了放着吃灰&#xff0c;那就太亏了&#xff01; 最近在和粉丝聊的过程中&#xff0c;发现大家对 AI 副业还是挺感兴趣的。 …

「Qt Widget中文示例指南」如何实现一个简单的RHI小部件示例(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文将为大家演示如…

重学java 52.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

学习笔记——IP地址网络协议——网络掩码(Netmask)

三、网络掩码(Netmask) 1、网络掩码概述 网络掩码(Netmask)又称子网掩码(Subnet Mask)网络掩码为32 bit&#xff0c;与IP地址的位数一样&#xff0c;通常也以点分十进制数来表示。 子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。子网掩码只有一个作用&#xf…

SpringBoot 单元测试 指定 环境

如上图所示&#xff0c;在配置窗口中添加--spring.profiles.activedev&#xff0c;就可以了。

创建采购订单免费行项目,注意事项

1.我在使用bapi&#xff08;BAPI_PO_CREATE1&#xff09;创建采购订单免费行项目的时候&#xff0c;还是报错了请输入净价格。 解决方式&#xff1a;把这些数据都赋值好&#xff0c;那么你的采购订单行项目就是免费项目。 BAPIMEPOITEM-IR_IND 空 &#xff08;发票收据标识&am…