查询—统计计算,分组排序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Having——例子
select 书号,sum(订购数量*订购价格) as '总价' from 订单明细 group by 书号 having 书号 like '105%'
• select 语句功能:从数据库中检索出符合条 件的记录。 • 语法结构: • SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
查询过程中的排序
查询过程中的排序
Order by子句
• 根据查询结果中的一个或多个字段进行排序, 可以是升序(Asc),降序(Desc),默认是升 序 • 注意! 在 ORDER BY 子句中不能使用 ntext ntext、 text 和 image 列,Order by列表中不允许使 用子查询、聚合表达式、常量表达式,但可在 选择字段列表中为聚合表达式指定一个别名, 然后在Order by 中引用该别名。
作业
• 完成项目指导书中的任务
统计函数——avg() 统计函数——avg() ——avg
• --查询每个类别的作者的平均出版 费 select 作者类别 作者类别,avg(出版费 出版费)as 平 出版费 均出版费 from 作者信息 group by 作者类别
Max函数和Min函数
功能:从数字类型和字符类型的字段中选取最大 (小)值。 练习:查询图书明细表中,最低的图书价格和最 高的图书价格。 练习:查询每类作者中,出版费最高的作者和出 版费最低的作者。
注意!如果在某个选择列表中使用了汇总函数,那么该 选择列表只能包含:汇总函数,通过GroupBy字句包含 的字段,常量表达式。
读程序——说明程序的含义 select 书号,sum(订购价格*订购数 量) as '总价' from 订单明细 group by 书号
读程序——说明程序的含义
select 书号,max(订购数量) as '数量' from 订单明细 group by 书号
Order by子句——按单个 字段排序
select * from 订单明细 order by 订购数量 desc
Order by子句——按多个 字段排序
• --查询作者的出版费信息 • --按照作者的类别升序排列,按照出版费 的降序排列 select 作者姓名 作者类别 出版费 作者姓名,作者类别 作者类别,出版费 from 作者信息 order by 作者类别 出版费 作者类别,出版费 出版费desc
小结
• GROUP BY (分组统计计算)
注意!如果在某个选择列表中使用了汇总函
数,那么该选择列表只能包含:汇总函数, 通过GroupBy字句包含的字段,常量表达式。 • HAVING (筛选组):注意! HAVING 与 WHERE子句的区别 • ORDER BY(排序) 子句: 其后的字段列表 将决定排序的先后次序
查询语句 ——统计计算、分组 ——统计计算 统计计算、 、排序
学习目标
• 掌握GROUP BY (分组统计计算)/ HAVING ( 筛选组)/ ORDER BY(排序) 子句 • SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
Group by字句
• Group by后面跟着的用于分组的字段名称列表 将决定查询结果集分组的依据和顺序。
• 注意!如果在某个选择列表中使用了汇总函
数,那么该选择列表只能包含:汇总函数,通 过GroupBy字句包含的字段,常量表达式。
汇总函数(聚合函数)
• 功能:在查询结果集中生成汇总值 在查询结果集中生成汇总值
例子:查询每个部门中,工资最 低的那位员工的姓名 use sample1 select 所属部门,max(工资),min(工 资) from 员工数据表 group by 所属部门
注意事项
select 订单号,书号,sum(订购价格* 订购数量) as '总价' from 订单明细 Group by 订单号,书号
汇总函数(聚合函数)
• 注意:除count(*)外,其他汇总函数都处理单 个字段中全部符合条件的值,生成一个结果值。 • --例子:查询订单明细表中每张订单的订购总价
use 图书订购系统
select 订单号 订单号,sum(订购价格 订购数量 as 每张 订购价格*订购数量 订购价格 订购数量) 订单总价 from 订单明细 Group by 订单号 --练习:查询所有订单的订购总价 练习: 练习
读程序——说明程序的含义
select count(订单号)as '订单数', sum(订购数量*订购价格) as '总价', max(订购数量) as '订购数量的最大值', min(订购数量) as '订购数量的最小值' from 订单明细
• select 语句功能:从数据库中检索出符合条件的 记录。 • 语法结构: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
• Where子句用来筛选表中的行 • Group by 子句进行分组。 • Having子句用来筛选组(group by 产生的)。
Having子句的例子
--查询编号为10101和10801的图书被订购的 总价 • select 书号 书号,sum(订购数量 订购价格 as '总 订购数量*订购价格 订购数量 订购价格) 总 价' • from 订单明细 • group by 书号 • having 书号 in ('10101','10801') --练习:查询 练习: 练习 查询图书被订出的总价高 于2000元的图书编号(书 号)
Count(表达式) 忽略空值 去掉副本 (distinct) 计算image和text 数据类型的字段 是 是 否 Count(*) 否 否 是
sum函数,avg函数使Байду номын сангаас注意事项
• 忽略计算对象中的空值 • 可以使用distinct和all 关键字,all是默认 值 • 应用于数字类型的字段(int, smallint, tinyint ,decimal, numeric, float , real, money ,smallmoney)
电子商务网站购物
为什么要学习统计计算?
为什么要学习统计计算?
为什么要学习统计计算——学生 管理系统项目中的查询需求
• 统计学生表中每个班的人数 • 汇总计算:成绩表中每门课程的平均分、最高 分、最低分 • 汇总计算:每个学生的总分,并且排序,作为 奖学金评定的依据之一 • 统计每门课程不及格的人数,制定补考安排计 划
使用having关键字
• 为组指定筛选条件 • 只有符合条件的组才出现在查询中。 • Having子句的语法与Where子句的语法类似,唯 一不同的是Having子句中可以包含聚合函数, 是对Group by选择出来的结果再次进行筛选。
Where,Group by, Having子 句的作用以及作用顺序:
Group by字句
• 功能:将数据记录依据设置的条件分成多个组 • 一般情况,只有使用该子句,Select子句中所使用的 汇总函数(例如sum, count,min,max等)才会起作用。 • text、ntext text ntext 和 image 类型的列不能用于 group_by_expression。
综合例子
select 书号 订购价格 订购数量 书号,订购价格 订购数量, 订购价格,订购数量 sum(订购价格 订购数量 as '每本书被订购总 订购价格*订购数量 订购价格 订购数量) 每本书被订购总 价' from 订单明细 where 订购数量<=5 订购数量<=5 group by 书号 订购价格 订购数量 书号,订购价格 订购价格,订购数量 having sum(订购价格 订购数量 >=2000 订购价格*订购数量 订购价格 订购数量) order by 订购数量 订购数量desc
分组汇总——count( )
--查询订单信息表中每位客户的订单的 查询订单信息表中每位客户的订单的 个数 select 客户编号 客户编号,count(订单号 as 每 订单号) 订单号 个客户订单数 from 订单信息 group by 客户编号
count函数和count(*)函数
count(表达式):表达式通常是字段 count(*):返回符合条件的纪录条数 二者的区别