聚合函数
2023-06-26 本文已影响0人
新苡米
常用的聚合函数有COUNT()、AVG()、SUM()、MAX()、MIN()。
COUNT()函数:统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。
COUNT(*)计算表中总的行数,不管某列是否有数值或者为空值。
COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。
AVG()函数:通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
SUM()函数:是一个求总和的函数,返回指定列值的总和。
MAX()函数:返回指定列中的最大值,不仅适用于查找数值类型,也可应用于字符类型。
MIN()函数:返回查询列中的最小值,不仅适用于查找数值类型,也可应用于字符类型。
一、聚合函数及group by
标准语法
聚合函数类型:sum(),avg(),max(),min(), count()
-在不使用group by 情况下,select后跟的全是字段名 或 全是聚合列(如sum(),min()...),不能" select 字段名,sum() "混搭。
-在使用group by 情况下,select后可以跟“字段名,聚合列”,但是其中的字段名必须是group by 中所列的字段名,没列的字段名也是不能使用的。聚合列里的字段名就可以不是group by 包含的。
-sum、avg、max、min函数必须指定字段进行聚合运算,无法使用通配符,同时这些指定字段名的聚合函数都会忽略空值行。
-count(字段名)计算字段下的总行数,但是计算时将忽略空值的行;count(*)计算表中的总行数,不管某列是否有数值或者为空值;因此,count(*)适合计算表格行数,count(字段名)计算字段中非空的行数。
-group by 有数据去重功能,类似于distinct。但有区别,distinct是返回不同的行,group by 是先对特定的字段中相同的值分为一个区,然后再对字段去重分组。
group by 子句有多个字段时,依据写的字段顺序依次对数据分区,因此group by 字段1,字段2与group by 字段2,字段1不一样。
依据洲分组,计算每个洲有多少个国家
###二、having
只有使用了group by 子句后才能使用having子句,having子句不能脱离group by 子句单独使用,因为having子句本质上是对group by 分组的筛选。
having子句中只能使用聚合函数和group by作为分组筛选的字段。
having的表达式和where的表达式基本相同,但是having的表达式中可以使用聚合数,where的表达式中不可以,因为where是对原表的行数据进行筛选,having是对group by 分组后的数据筛选。
对行数据筛选用where,对聚合函数的数据筛选用having。
三、SQL运行原理
image.png image.png image.png image.png四、数据类型转换函数
to_char //转换日期格式
to_char('字段',"日期类型")
image.png