小袁SQL Server学习(五)——聚合函数和分组查询

内容纲要

1、SUM函数

SUM聚合函数用于对数字型字段的值累加求和,它可以计算单列或多列的总和。

例如:

select sum(age) from person    -- 查询person表里的年龄的总和

2、MAX函数和MIN函数

可以分别获取column列的最大值和最小值

例如:

select max(age) from person    -- 查询person表里的年龄的最大值

--求分数最低的

 select min(score) from T_table

示例:

查询年龄最大的员工的出生日期

Select min(birthday)最年长员工出生日期,max(datediff(year,birthday,getdate()))最年长员工岁数  from employee

解释:

  • 内置函数getdate()显示当前日期
  • 内置函数datediff(date1,date2)用于计算日期date1和date2 之间相隔的天数

3、AVG函数

AVG(column)函数用于返回数字型字段column平均值

注意:列值为Null的字段不参与运算

例如:

select avg(num) as 平均值 from [tb]

4、COUNT函数

用于统计记录行数,使用COUNT函数时,必须指定一个列的名称或使用 " * " ,使用" * " 可以获取整张表的记录行数

注意:

当使用COUNT(column1)函数统计column1列值的数目时,column1列值为Null的不计入计算

示例:

 

SQL
---利用COUNT 函数求日销售额大于某值的商品数

select COUNT(编号) 日销售额大于的数量  from tb_sell where 日销售额>200

显示结果:

---下面是几个COUNT 函数的实用例子

--查询几个雇员表(tb_Employee)中数据库中有多少条记录

select COUNT(*) from tb_Employee

--查询雇员表(tb_Employee)中有多少位员工住在长春市

select COUNT(*) from tb_Employee where 家庭住址 like '%长春市%'

--查询雇员表(tb_Employee)中年龄介于20~30岁的员工有多少位

select COUNT(*) from tb_Employee where DATEDIFF(YY,出生年月,GETDATE) BETWEEN 20 AND 30

最高单价与平均单价之差:max(unitprice)-avg(unitprice)

平均单价与最低单价之差:avg(unitprice)-min(unitprice)

计算单价平均值:select sum(unitprice)/count(unitprice) 平均单价 from goods

5、VAR函数

用于计算指定表达式中所有值的方差

示例:select var(age) from person    -- 查询person表里的年龄的方差

6、GROUP BY子句

使用该子句可以将数据划分到不同的组中,实现对记录的分组查询

GROUP BY 字段列表 [HAVING  条件表达式]

  • “字段列表”表示进行分组所依据的一个或多个字段的名称
  • “HAVING  条件表达式”是一个逻辑表达式,用于指定分组后的筛选条件

注意:

使用分组查询时,出现在select后面的字段必须是group by后面的字段,或者聚合函数

示例:

--查询每个班号存在所少人

select  class as 班号, 班级人数 =count(*)  from T_user  group by class

--按照性别统计人数

select   性别=sex,  人数=count(*)  from T_user  group by sex

7、HAVING子句

对分组后的结果进行筛选,未知放在GROUP BY 子句之后,它常包含聚合函数

示例:查询1组和2组分别的总值,但是只需要查询组最大值小于40和最小值大于10的组

结果是只有1组的最大值小于40和最小值大于10,而2组在过滤中排除在外了

8、Having 与where 的区别

where用来匹配条件,是分组前对每一条数据进行筛选,后面是不可以有聚合函数的,但是可以有任何列进行条件判断筛选。having 是对分组后的每一组数据进行筛选,后面可以有聚合函数的,但是不一定有数据表中的任何列。

 

给TA打赏
共{{data.count}}人
人已打赏
SQL Server

小袁SQL Server学习(四)——函数的使用

2022-7-28 10:57:25

SQL Server

小袁SQL Server学习(六)——连接查询

2022-7-28 15:28:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索