当前位置: 首页 > news >正文

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

一、实验目的

1.掌握Management Studio的使用。

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

二、实验内容及要求

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

--统计年龄大于30岁的学生的人数。SELECT COUNT(*) AS 人数FROM StudentWHERE (datepart(year,getdate())-datepart(year,Birthday))>30

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

--统计数据结构有多少人80分或以上。SELECT COUNT(*) AS 人数FROM StudentGradeWHERE Course_id IN(SELECT Course_idFROM CourseWHERE Course_name='数据结构')AND Grade>80

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

--查询“0203”课程的最高分的学生的学号。(请分别用TOP1和函数来进行查询,并分析它们的区别)--Top 1SELECT Top 1 Stu_idFROM StudentGradeWHERE Course_id='0203'--Max 函数SELECT Stu_idFROM StudentGradeWHERE Grade=(SELECT Max(Grade) FROM StudentGrade)AND Course_id='0203'

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

--统计各系开设班级的数目(系名称、班级数目),并创建结果表。(需考虑没有班级的系)select Depar_name as 系名称,count(*) as 班级数目 into DeparNumberfrom Deparment LEFT JOIN Class ON Deparment.Depar_id=Class.Depar_idgroup by Depar_name

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

--统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。(TOP 3,但不能处理人数并列的情况。试考虑更好的方法。)--Top 3SELECT Top 3 Course_id ,COUNT(*) AS 选修人数FROM StudentGradeGROUP BY Course_id ORDER BY 选修人数 DESC--优化方案
--内部查询首先在选课表中进行分组,按照课程编号计算每门课程的选修人数,并使用 RANK() 窗口函数为每个课程编号进行排名,从而获得对应的排名号。--外部查询该查询从内部查询的结果集(被命名为结果表)获取每门课程的编号和选修人数,并选择排名前三名的课程数据输出。SELECT Course_idFROM (SELECT Course_id,COUNT(*) AS 选修人数,RANK() OVER (ORDER BY COUNT(*) DESC) AS 名次FROM StudentGradeGROUP BY Course_id) AS 结果表WHERE 结果表.名次<=3

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

--统计每科目的最高分、最低分,平均分、总分,并以中文列名显示。SELECTCourse.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_idGROUP BY Course.Course_name

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

--【选做】所有成绩都在70分以上的学生姓名(提示:使用子查询。需考虑未选课的学生)。--这里使用了子查询来查找未选课的学生,并过滤掉成绩低于70分的学生。如果没有任何一门成绩低于70分,则该学生将被返回SELECT Student.Stu_nameFROM StudentWHERE NOT EXISTS (SELECT *FROM StudentGradeWHERE StudentGrade.Stu_id = Student.Stu_id AND StudentGrade.Grade < 70)

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

--【选做】“数据库”课程得最高分的学生的学号、姓名和所在系。--材料无“数据库”将其改为“数据库原理”SELECT Top 1 Student.Stu_id,Student.Stu_name,Depar_nameFROM Student JOIN StudentGrade ON Student.Stu_id=StudentGrade.Stu_idJOIN Class ON Class.Class_id=Student.Class_idJOIN Deparment ON Class.Depar_id=Deparment.Depar_idJOIN Course ON StudentGrade.Course_id=Course.Course_idWHERE Course_name='数据库原理'GROUP BY Student.Stu_id,Student.Stu_name,Depar_nameORDER BY MAX(StudentGrade.Grade)DESC

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

--【选做】至少选修了两门课及以上的学生姓名和性别。
--内部子查询先对学生进行分组(GROUP),并求出(COUNT)每个学生选修不同科目的数量,再(HAVING)筛出符合条件的学生SELECT DISTINCT Stu_name ,Stu_sexFROM Student JOIN StudentGrade ON Student.Stu_id=StudentGrade.Stu_idJOIN Course ON StudentGrade.Course_id=Course.Course_idWHERE Student.Stu_id IN (SELECT StudentGrade.Stu_idFROM StudentGradeGROUP BY StudentGrade.Stu_idHAVING COUNT(DISTINCT StudentGrade.Course_id) >= 2)

相关文章:

  • 区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测
  • 2.3Docker部署java工程
  • PlugLink:提升Python API整合效率的开源框架
  • ThinkBook 14 G6+ IMH(21LD)原厂Win11系统oem镜像下载
  • 基于Jenkins+Kubernetes+GitLab+Harbor构建CICD平台
  • 什么是封装?为什么是要封装?
  • 索引 ---- mysql
  • MySql 数据类型选择与优化
  • ad18学习笔记21:焊盘设置Paste Mask Expansion(锡膏层延伸)
  • 期权的时间价值是什么?和期权内在价值有啥不同?
  • css基本操作及使用
  • Go语言-切片底层探索 —— 补充篇:切片和底层数组到底是什么关系?
  • 2024年上半年高级信息系统项目管理师考后总结
  • 以字节为单位管理文件系统
  • 961题库 北航计算机 组成原理选择题 附答案 选择题形式
  • 0基础学习移动端适配
  • C# 免费离线人脸识别 2.0 Demo
  • chrome扩展demo1-小时钟
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • mysql中InnoDB引擎中页的概念
  • Node + FFmpeg 实现Canvas动画导出视频
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • uni-app项目数字滚动
  • 反思总结然后整装待发
  • - 概述 - 《设计模式(极简c++版)》
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 判断客户端类型,Android,iOS,PC
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信公众号开发小记——5.python微信红包
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 因为阿里,他们成了“杭漂”
  • 在Unity中实现一个简单的消息管理器
  • 终端用户监控:真实用户监控还是模拟监控?
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • #stm32驱动外设模块总结w5500模块
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二开)Flink 修改源码拓展 SQL 语法
  • (力扣题库)跳跃游戏II(c++)
  • (每日一问)基础知识:堆与栈的区别
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三十五)大数据实战——Superset可视化平台搭建
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Java算法:二分查找
  • (原创)可支持最大高度的NestedScrollView
  • (转)ORM
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***测试-HTTP方法
  • .net 8 发布了,试下微软最近强推的MAUI