六、聚合函数、数据分组

1.AVG函数:求平均值。

需要注意的是:每个字段都必须使用一个AVG函数:

select avg(id) as id_avg,avg(price) as price_avg from tb2;

如上,这样才能分别求出id和price的平均值。

AVG函数忽略NULL。

2.COUNT函数:统计数量。

  • 使用 COUNT(*) 对表中行的数目进行计数,不管表列中包含的是空值( NULL )还是非空值。
  • 使用 COUNT(column) 对特定列中具有值的行进行计数,忽略NULL值。

    select count(*) from tb2;

    select count(column_name) from tb2;

    第一条语句会计算包含空值的记录,第二条语句则不会。

3. MAX和MIN函数:计算最大值和最小值。

MAX(),MIN()都必须指定列名。分别找出这一列最大值和最小值。

4. SUM函数:统计合计计算值。

select sum(id) as id_sum,sum(price) as price_sum from tb2;

此语句分别检索出id和price的和。

5. Group by子句:分组。

例如:

select id,count(*) as id_count from tb2 group by id;

此语句按id分组来检索出id和id数量。结果为:

tips:如果出现聚合函数,则只能使用group by而不可以使用order by.

6. having子句:过滤分组。

  • WHERE 过滤指定的是行而不是分组。 事实上, WHERE 没有分组的概念。
  • 目前为止所学过的所有类型的 WHERE 子句都可以用 HAVING 来替代。唯一的差别是WHERE 过滤行,而 HAVING 过滤分组。

可以理解成,having可以替代where,但是where不能替代having。因为having还可以过滤分组。

select id, count(*) from tb2 group by id having count(*)>=2;

此语句按id为分组,并检索出id数量不小于2的id和对应的数量。

HAVING 和 WHERE 的差别这里有另一种理解方法:

  • WHERE 在数据分组前进行过滤,HAVING在数据分组后进行过滤。
  • WHERE排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。

where和having连用:

select id,price,count(*) from tb2 where price > 555 group by id having count(*)>=1;

以id为分组,检索price大于555并且数量不少于1的id,price,以及数量。

7.总结

原文地址:https://www.cnblogs.com/love-jelly-pig/p/10358680.html

时间: 2025-01-14 08:35:37

六、聚合函数、数据分组的相关文章

聚合函数,分组查询,连接查询综合例子

实例如下: update users set classes='1' where id in('u001','u002','u003','u004'); update users set classes='2' where id in('u005','u006','u007'); users表的内容如下: +------+-----------+------------+------+-------+---------+ | id | firstname | secondname | age |

数据库 聚合函数与分组

聚合函数与分组 第一部分: 1.对一组数据统计分析师使用聚合函数来实现的 A.count:返回结果集中行的数目 B.sum:和 C.avg:平均值(某列) D.max:最大值(某列) E.min:最小值(某列) a:执行行和列计数 语法:select count(计数规范) from : *:所有选择行,包括null              count(*) All 列:非空值行                    count(all 列) Distinct 列:唯一.非空行        

窗口聚合函数与分组聚合函数的异同

窗口聚合函数与分组聚合函数的功能是相同的:唯一不同的是,分组聚合函数通过分组查询来进行,而窗口聚合函数通过OVER子句定义的窗口来进行. --<T-SQL性能调优秘笈---基于SQL Server2012窗口函数>2.1.1窗口聚合函数描述

聚合函数与分组

一:聚合函数 count(*),返回行的数目.数值为null的不计算在内,distinct 去重复. sum()计算列中所有值得总和. avg()计算列中所有值得平均值. max()计算列中所有值得总最大值. min()计算列中所有值得最小值. 二:分组的语句 group by 三:having 子句 四:执行顺序 select--from--where--group--order by--having 五:组合查询 1,添加到其他查询的查询语句叫子查询.如果子查询的返回单行时,就可以简单的插入

SQL语句汇总(三)——聚合函数、分组、子查询及组合查询 - Darly

–COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计算列的最小值 首先,创建数据表如下: 执行列.行计数(count): 标准格式 SELECT COUNT(<计数规范>) FROM <表名> 其中,计数规范包括: - * :计数所有选择的行,包括NULL值: - ALL 列名:计数指定列的所有非空值行,如果不写,默认为ALL: - DISTINCT 列名:计数指定列的唯一非空值行. 例,计算班里共有多少学生:

【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法

第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…) 三.排序 语法:select 字段1, 字段2, ... from 表名 where 条件 order by 字段 [asc|desc] asc :升序 desc :降序 默认是升序asc SELECT * FROM s

聚合函数,分组查询,连接查询综合样例

实比例如以下: update users set classes='1' where id in('u001','u002','u003','u004'); update users set classes='2' where id in('u005','u006','u007'); users表的内容例如以下: +------+-----------+------------+------+-------+---------+ | id | firstname | secondname | a

10-31C#基础--数据库查询语句之聚合函数、分组

在查询语句时,也存在一些方法和属性,而这些方法在查询时统称为函数,便利查询时使用 聚合函数(都是针对字段操作) 聚合是缩减一系列输入值的表达式,例如缩减为单个值. Select*from biao 1.--求平均分AVG:只能对数字类型的操作,返回一个值(返回非null值的平均值) Select AVG(age)from biao--执行后没有列名 Select AVG(age) as nianing from biao---执行后有列名,加as. --放在select...from之间的一定是

关系型数据库———聚合函数与分组

count:统计行数 select count(*) from student select count(age) from student /*会不计null值*/ sum:返回列中值的和,会自动跳过null值(数值+null=null) select sum(age) from student avg:返回结果集中的所有值的平均值 select avg(age)from student max/min:返回所有值中的最大/小值 select max(age) from student Gro

oracle语句中的聚合函数以及分组group by的使用实例

1 create table t_class2( 2 name varchar2(255), 3 subject varchar2(255), 4 score integer, 5 stuid integer 6 ) 7 8 insert into t_class2 values('张三','数学',89,1); 9 insert into t_class2 values('张三','语文',80,1); 10 insert into t_class2 values('张三','英语',70,1