前言
在数据查询的很多场合,除了需要显示数据表的原始数据,还需要对这些数据进行分析、汇总以及求极值等, 如获取公司员工的人数、工资总额、最高工资、最低工资和平均工资等。本章我们将通过学习SQL Server 聚合函数轻松获取上述数据。另外,我们经常需要对某些数据进行分门门别类地统计:汇总,如按月份统计员工工资 总额、按种类统计商品的销售总额和平均售价等。利用本章所介绍的GROUP BY子句,同时结合聚合函数,就可有效地解决此类需求。
目录
查询这些人的最大money,最小money,平均money,总和money,及统计money行的数量
根据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 商品件数
查询后