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

数据库-day06

一、实验名称和性质

分类查询

验证  综合 设计

二、实验目的

1.掌握数据查询的Group by ;

2. 掌握聚集函数的使用方法。

三、实验的软硬件环境要求

硬件环境要求:

       PC机(单机)

使用的软件名称、版本号以及模块:

       Windows 10下的SQL Server 2019

四、知识准备

前期要求掌握的知识:

数据检索的语句格式:

SELECT [ALL|DISTINCT] <目标列表达式列表>                                                  

FROM <表名或视图名列表> 

[ WHERE <条件表达式> ]

[ GROUP BY <列名1>,… [WITH ROLLUP | CUBE]  [CUBE(…)| ROLLUP(…)]

[GROUPING SETS (…)]

[ HAVING <条件表达式> ] ]

[ ORDER BY <列名2> [ ASC|DESC ] ]

 其中,SELECT后的目标列表达式可以是列名、表达式或函数。

GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。

HAVING短语:筛选出只有满足指定条件的组

ORDER BY子句:对查询结果表按指定列值的升序或降序排序

注意:T-SQL语句中关键字不区分大小写

五、实验内容(以实验5的数据为基础)

1.对数据表进行分类汇总;

2.在检索中使用聚集函数;

六、验证性实验

  1. 使用聚集函数

(1)查询选课表中最高分、平均分、最低分

SELECT MAX(DEGREE), AVG(DEGREE),MIN(DEGREE)

FROM SCORE023

(2)查询“3-105”课程的最高分、平均分和最小成绩。

SELECT MAX(DEGREE), AVG(DEGREE),MIN(DEGREE)

FROM  SCORE023

WHERE  CNO=‘3-105’

  1. 进行分组统计:

(1)查询各学生的选课数

SELECT  SNO,COUNT(*)

FROM  SCORE023

GROUP  BY  SNO

(2)使用HAVING 字句:“选课表”中查询选修了3 门以上课程的学生学号。

SELECT  SNO ,COUNT(*)FROM SCORE023

GROUP  BY  SNO

HAVING  COUNT(*)>=3

    

(3)“选课表”中按学号分组汇总学生的平均分,并按平均分的降序排列。

SELECT  SNO  学号, AVG(DEGREE)  平均分  FROM  SCORE023

GROUP  BY  SNO

ORDER  BY  平均分  DESC    -- -- ORDER  BY AVG(DEGREE)  DESC

        

“选课表”中查询平均成绩80以上课程的学生学号和平均成绩。

SELECT  SNO ,avg(degree) 平均 FROM SCORE023

GROUP  BY  SNO

HAVING  avg(degree)>=80

“选课表”中95031班中平均成绩80以上课程的学生学号,姓名,平均成绩。

SELECT  S.SNO ,SNAME,avg(degree) 平均 FROM SCORE023  SC

JOIN STUDENTXXX  S ON S.SNO=SC.SNO  WHERE CLASS=’95031’

GROUP  BY  S.SNO,SNAME

HAVING  avg(degree)>=80

(4)分析下面SELECT语句执行结果

SELECT  SNO, CNO ,AVG(DEGREE)  FROM  SCORE023

GROUP  BY  SNO                        --???

SELECT  SNO,CNO,AVG(DEGREE)  FROM  SCORE023

GROUP  BY  SNO,CNO WITH ROLLUP

SELECT  SNO,CNO,AVG(DEGREE)  FROM  SCORE023

GROUP  BY ROLLUP(SNO,CNO) 

SELECT  SNO, CNO,AVG(DEGREE) FROM  SCORE023

GROUP  BY  SNO,CNO WITH CUBE

SELECT  SNO,CNO,AVG(DEGREE) FROM  SCORE023

GROUP  BY CUBE(SNO,CNO)

SELECT  SNO,CNO,AVG(DEGREE)  FROM SCORE023

GROUP BY GROUPING SETS (SNO,CNO)

SELECT  SNO,CNO,AVG(DEGREE)  FROM SCORE023

GROUP BY GROUPING SETS (ROLLUP(SNO,CNO))

SELECT  SNO,CNO,AVG(DEGREE)  FROM SCORE023

GROUP BY GROUPING SETS (ROLLUP(SNO,CNO),CUBE(SNO,CNO))

七、设计性实验

1.实验要求

(1)查询每门课程的平均分,包括课程号和平均分。

(2)查询每门课程的平均分,包括课程号、课程名和平均分。

(3)查询男的平均分,包括学号和平均分。

(4)查询女的平均分,包括学号,姓名和平均分。

(5)查询每门课程的最高、最低分,包括课程号和最高、最低分。

(6)查询每位学生的最高、最低分、平均分,包括学号,姓名和最高、最低分、平均分。

(7)查询所有成绩都及格的学号,姓名

(8)查询每位老师所授课程的最高、最低分,包括教师号,姓名,课程名和最高、最低分。

(9)查询学生信息,包括学号,课程号,成绩以及学生的平均分。(一个语句)

 

(10)查询学生信息,包括姓名,课程名,成绩以及每位学生的平均分和每门课程的平均分。(一个语句)

(11)查询学生信息,包括学号,姓名,课程号,课程名,成绩以及每位学生的平均分和每门课程的平均分。(一个语句)

 (12)查询学生信息,包括学号,姓名,课程号,课程名以及每位学生的平均分和每门课程的平均分。(一个语句)

相关文章:

  • FPGA阵列
  • AI写程序:用 AI 实现一个递归批量转化 GBK/GB2312 转 UTF-8 工具:轻松解决文本编码转换难题
  • Vue与React组件化设计对比
  • Rust + WebAssembly 生产部署指南
  • apollo 动态配置
  • Kubernetes》》K8S》》Pod的健康检查
  • 绿幕抠图直播软件-蓝松抠图插件--使用相机直播,灯光需要怎么打?
  • 多路由器通过三层交换机互相通讯(单臂路由+静态路由+默认路由版),通过三层交换机让pc端相互通讯
  • 如何分析服务器日志以追踪黑客攻击行为
  • 阿里云RAM账号免密登录Java最佳实践
  • DP 32bit位宽数据扰码实现和仿真
  • springboot整合阿里云百炼DeepSeek,实现sse流式打印
  • Modbus TCP转Profibus DP主站网关:跨协议集成的核心枢纽
  • HTTP/1.1 对头堵塞问题
  • JMeter中设置HTTPS请求
  • MySQL游标(cursor)详解
  • 3 提示词工程指南-提示词编辑 - 持续更新
  • LWIP_MQTT连接ONENET
  • Java 中常用队列用法详解
  • OpenGL shader开发实战学习笔记:第十一章 立方体贴图和天空盒
  • 金砖国家召开经贸联络组司局级特别会议,呼吁共同抵制单边主义和贸易保护主义
  • 继71路之后,上海中心城区将迎来第二条中运量公交
  • “海豚音”依旧互动更多,玛丽亚·凯莉本周来沪开唱
  • 均价19.5万元/平米!上海徐汇滨江地王项目“日光”,销售额近70亿元
  • 中美会谈前都发生了什么?美方为何坐不住了?
  • 长沙潮宗街内“金丝楠木老屋文旅博物馆”起火:明火已扑灭,无伤亡