一、SQLServer里面的常用的五种聚合函数。
1.Sum(和)-—对于NULL值默认为0
2.MAX(最大值)MIN(最小值)
3.AVG (平均值)—不统计空值,例如存在有四个人,但是只有三个人有成绩,平均成绩为:总和/3
4.COUNT(数量)
--统计所有人分数总和
select sum(score) from T_table
--统计表中一共有多少条记录
select count(*) from T_table
--求平均分数
--方式一
select
平均分数=(select sum(score)as sumScore from T_table) *1.0/(select count(*) from T_table)
--方式二
select avg(score*1.0) from T_table
--求分数最高的
select max(score)from T_table
--求分数最低的
select min(score)from T_table
--最大日期与最小日期
select max(createTime )as 最大日期,min(createTime)as 最小日期 from T_table
效果展示:
二、聚合函数使用注意事项
1.聚合函数不统计空值
1.Sum(和)-—对于NULL值默认为0
2.AVG (平均值)—不统计空值(null),例如存在有四个人,但是只有三个人有成绩,平均成绩为:总和/3
--方式一
select
平均分数=(select sum(score)as sumScore from T_table) *1.0/(select count(*) from T_table)
--方式二
select avg(score*1.0) from T_table
效果展示:
3.聚合函数如果没有手动的Group By,默认整个表当做成一组,然后对组进行的统计
--统计表中一共有多少条记录
select count(*) from T_table
三,分组(group by)
Select 查询的时候,需要的数据进行汇总,这里就用到了groupby 语句,分组一般都和聚合函数连用。下面我们介绍一个分组的小中例子,以及展示效果。
注意:(特别强调)
1.group by 子句一定放在where 语句之后,与order by 都是对筛选后的数据进行处理,where后面匹配的是条件,通常是用来筛选数据的。
2.没有出现在group By 子句中的列是不能放在Select语句列名表中(聚合函数除外)
当使用了分组语句groupby 语句,或者聚合函数的时候,在select查选列表中,不能包含其他的列名,除非该列在group by 句子中,或者该列包含在某个聚合函数当中。
!!!错误例子:班级号是不可能存在select后面的。
select
班级号=class,
性别=sex,
人数=count(*)
from T_user
group by sex
例子学习:
--查询每个班号存在所少人
select
class as 班号,
班级人数 =count(*)
from T_user
group by class
--按照性别统计人数
select
性别=sex,
人数=count(*)
from T_user
group by sex
--查询每个班级男同学人数
select
班级号=class,
男同学人数=count(*)
from T_user
where sex='男'
group by class
效果展示:
四、Having 与where 的区别
where用来匹配条件,是分组前对每一条数据进行筛选,后面是不可以有聚合函数的,但是可以有任何列进行条件判断筛选。having 是对分组后的每一组数据进行筛选,后面可以有聚合函数的,但是不一定有数据表中的任何列。
通过上面概述,我们可以将select语句执行顺序分为以下形式:
先 From 表
ON
JOIN
where 条件
Group BY 列
Having 筛选条件
SELECT
DISTLNCT
Order By列
TOP
五,向表中插入多条数据(将一个表中的数据备份到另一个新的表中)
完完全全的插入到一个不存在的表中,该如何实现呢?
代码:select into 语句不能重复执行,因为每次执行都会创建一个新的表,但是新的数据表不存在旧数据表的约束,只是备份了数据,表的结构没有进行备份
--select * into 要插入的表 from 带有数据的表
select * into T_person from T_user
效果展示:
那么如何只备份表的结构呢?
--只是拷贝了表的结构,但是没有拷贝表的数据
select top 0 * into T_data from T_user
2.向一个已经存在数据表插入多条数据:(插入的时候,自增长的数据是不行的哦)
--例如将T_user表中的所有女同学插入到T_data表中
insert into T_data
select sex, name, class
from T_user
where sex='女'
效果展示
关于聚合函数和分组学习就先分享到这里。如果本篇博客对您有所帮助,记得点赞哦!