> 文章列表 > SQL Server基础 第六章 聚合函数和分组查询

SQL Server基础 第六章 聚合函数和分组查询

SQL Server基础 第六章 聚合函数和分组查询

        前言

        在数据查询的很多场合,除了需要显示数据表的原始数据,还需要对这些数据进行分析、汇总以及求极值等, 如获取公司员工的人数、工资总额、最高工资、最低工资和平均工资等。本章我们将通过学习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 商品件数

查询后