前言
在数据查询的很多场合,除了需要显示数据表的原始数据,还需要对这些数据进行分析、汇总以及求极值等, 如获取公司员工的人数、工资总额、最高工资、最低工资和平均工资等。本章我们将通过学习SQL Server 聚合函数轻松获取上述数据。另外,我们经常需要对某些数据进行分门门别类地统计:汇总,如按月份统计员工工资 总额、按种类统计商品的销售总额和平均售价等。利用本章所介绍的GROUP BY子句,同时结合聚合函数,就可有效地解决此类需求。
目录
1、聚合函数
查询这些人的最大money,最小money,平均money,总和money,及统计money行的数量
查询年纪最大的员工的出生日期,及其年龄
2、分组
根据category进行类型分组,然后显示每组的平均价格,并按照平均价格进行排序
根据类型分组统计商品数量和平均单价,并按平均单价升序显示平均单价高于100元的分组信息
根据类型和价格进行多字段分组
统计分组后各组有效数据和编辑
统计每条订单所订购的商品件数大于4的分组信息,并按商品件数升序显示
编辑
1、聚合函数
SUM() 求和 sum(列名)
MAX() 最大值 max(列名)
MIN() 最小值 min(列名)
AVG() 平均值 avg(列名)
COUNT() 统计行数, 只统计有效行数
查询这些人的最大money,最小money,平均money,总和money,及统计money行的数量
注意:此时计算平均数时,因为有一个空值所以不参与计算,所以就除以6就好了
select sum(money)宿舍月收入 ,max(money)最高, min (money)最低,AVG (money)平均 ,count(money) from Table_1
查询年纪最大的员工的出生日期,及其年龄
2、分组
group by 列名, 根据列进行分组
group by 列名 having 筛选条件 对分组结果进行筛选
group by 列名 with rollup 统计分组后各组有效行数总和
根据category进行类型分组,然后显示每组的平均价格,并按照平均价格进行排序
select Category,count(*),AVG(UnitPrice)from Goods group by Category order by AVG(UnitPrice)
根据类型分组统计商品数量和平均单价,并按平均单价升序显示平均单价高于100元的分组信息
select Category,count(*)数量,AVG(UnitPrice)平均单价 from Goods group by Category having AVG(UnitPrice)>100 order by 平均单价
根据类型和价格进行多字段分组
统计分组后各组有效数据和
统计每条订单所订购的商品件数大于4的分组信息,并按商品件数升序显示
查询前
select OrdersID,sum(Quantity)商品件数 from OrdersDetail group by OrdersID having sum(Quantity)>4 order by 商品件数
查询后