6、聚合函数、数据分组

1.AVG函数:求平均值。

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

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

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

AVG函数忽略NULL。blog

2.COUNT函数:统计数量。

  • 使用 COUNT(*) 对表中行的数目进行计数,无论表列中包含的是空值( NULL )仍是非空值。
  • 使用 COUNT(column) 对特定列中具备值的行进行计数,忽略NULL值。ip

    select count(*) from tb2;
    select count(column_name) from tb2;
    第一条语句会计算包含空值的记录,第二条语句则不会。select

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

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

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

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

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

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.总结

相关文章
相关标签/搜索