0
点赞
收藏
分享

微信扫一扫

SQL 极简核心:聚合函数

回溯 2022-02-20 阅读 86

文章目录

所谓聚合,指的是垂直(跨行)聚合
输入多行,而只输出一行

注:若需横向(跨列)计算,则需要使用算数操作符+, -, *, /

1. MAX/MIN

它两的用法,没有区别。

MAX/MIN 聚合函数作用于表格的任意一列数据,并返回一个值,为其最大值/最小值。

# python 理解 max(numerical),value in col_lst > 0
a = 0
for v col_lst:
		if v > a:
				a = v
print(f"Max: {a}")
		

这一列数据的数据类型可以是数值,也可以是非数值。如果是数值列,则返回最大或最小的数值,若为非数值列,则按照字母顺序返回字母A 或者 字母Z

SELECT MAX(col_name), MIN(col_name)
FROM t

值得注意的是,MAX/MIN并会告诉你这个最大值或者最小值对应的行号,它只负责找出最大或者最小的那个值

对于下面这种多行具有相同最大值的行,它仅仅返回第一个出现这个最值的行

citycount
Amsterdam1
Bangalore1
Berlin2
Edinburgh1
London2

使用GROUP BY返回的结果是:

+--------+------------+
| City   | MAX(count) |
+--------+------------+
| Berlin |          2 |
+--------+------------+

可以看出返回的是(字母排序)第一个 count 为2 的那一行数据。

2. SUM/AVG

它两的用法很类似,放在一起。

SUM/AVG 聚合函数作用于表格的一列数值列的数据,并返回一个值,为忽略NULL值后的求和值/平均值。

SELECT SUM(numerical_col_name), AVG(numerical_col_name)
FROM t

注:SUM 是将NULL当做0来处理;AVG完全忽略NULL

有些情况下,AVG可能需要将 NULL值当做0值来处理,可以借助条件语句 CASE 来完成,后面详述。

3. COUNT

COUNT 相比其它聚合函数会有些特殊:
可以作用于全部列,同时可以作用于非数值列,而且还可以求去重后的行数(使用DISTINCT)。

COUNT counts how many rows are in a particular column.

COUNT 聚合函数的两种用法:作用于表格的任意一列或者全部列数据,并返回一个值,前者为某一列 非NULL值的行数,后者表示全表格的行数

# 作用于全部列
SELECT COUNT(*)  # 也可使用 COUNT(1)
FROM t

注:COUNT(*)COUNT(1)具有相同的效果。

# 作用于某一列
SELECT COUNT(col_name)
FROM t

COUNT() 还有另一种用法,结合DISTINCT 返回不重复的行数。

# 求去重行数
SELECT COUNT(DISTINCT col_name)
FROM t

小结

  • COUNT的三种形式:COUNT(*)/COUNT(1)COUNT(col_name)COUNT(DISTINCT col_name/*/1)
  • MAX/MIN 作用于某一数值列,返回这列的最大/最小值
  • AVG 作用于某一数值列,并完全忽略NULL值,计算这列所有非NULL行的平均值
  • SUM 作用于某一数值列,并将NULL当做0值,计算这列所有行的和

参考:

  1. SQL Aggregate Functions
  2. SQL CASE
举报

相关推荐

0 条评论