SQL 汇总数据(聚集函数)

版权声明:最终解释权归属Hern所有,恒! https://blog.csdn.net/qq_36761831/article/details/82990013

聚集函数:运行在行组上,计算和返回单个值。

SQL常见的聚集函数

AVG():返回某列的平均值

COUNT():返回某列的行数

MAX():返回某列的最大值

MIN():返回某列的最小值

SUM():返回某列值之和

注意:在指定别名以包含某个聚集函数的结果时,不应该用表中实际的列名。虽然这样做合法,但是使用唯一的名字会使你的SQL更容易理解和使用。

AVG()函数的使用(平均值)

AVG()通过表中行数计数并计算特定列值之和,求得该列的平均值;AVG()也可以用来确定特定列或行的平均值。

注意:

1、AVG()函数只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。

2、为了获得多个列的平均值,必须使用多个AVG()函数。

3、AVG()函数忽略列值为NULL的行。

语法使用举例

---返回所有products表中的平均值
SELECT AVG(price) AS 平均价格
FROM products;


---返回products表中符合特定列的的平均值
SELECT AVG(price) AS 平均价格
FROM products
WHERE id = 1003;

COUNT()函数的使用(统计行数、计数)

COUNT()函数进行计数,可利用COUNT()函数确定表中行的数目或符合特定条件的行的数目。

COUNT()函数有两种使用方式:

1、使用COUNT(*)对表中行的数目进行计数,不管表的列中包含的是空值( NULL ) 还是非空值,不忽略NULL值。

2、使用COUNT( 列名 ) 对特定列中具有值的行进行计数,忽略NULL值。

语法使用举例

---返回products表中的统计行数值
SELECT COUNT(*) AS 行数
FROM products;


---返回products表中符合特定列的的统计行数值
SELECT COUNT(id) AS 行数
FROM products;

MAX()、MIN()函数的使用(最大值、最小值)

MAX()、MIN()函数返回指定列中的最大值、最小值,MAX()、MIN()函数可以用来找出最大、最小的数值或日期值,也可以返回任意列中的最大值、最小值(包括返回文本列中的最大值、最小值,在用于文本数据数,如果数据按相应的列排序,则MAX()函数返回最后一行,MIN()函数返回最前面的一行)。

注意:MAX()、MIN()函数忽略列值为NULL的行。

 语法举例

---返回products表中的最大值
SELECT MAX(price) AS 最大值
FROM products;


---返回products表中的最小值
SELECT MIN(price) AS 最小值
FROM products;

SUM()函数的使用(计算数值之和)

SUM()函数用来返回指定列值的和(总计)。也可以利用标准的算术操作符所有聚集函数都可以用来执行多个列上的计算。

注意:SUM()函数忽略列值为NULL的行。

语法举例

---计算序号为1002的所有商品的总价
SELECT SUM(price)
FROM products
WHERE id = 1002;

---计算序号为1002的所有商品乘以数量的总价
SELECT SUM(price * price_num)
FROM products
WHERE id = 1002;

聚集不同的值

AVG()、COUNT()、MAX()、MIN()、SUM()五个聚集函数都可以如下使用:

1、对所有的行执行计算,指定ALL参数或不给参数(因为ALL是默认行为)。

2、只包含不同的值,指定DISTINCT参数(如果不指定DISTINCT,则假定为ALL),DISTINCT必须使用列名,不能用于计算或表达式。

3、如果指定列名,DISTINCT只能用于COUNT()函数,DISTINCT不能用于COUNT( * ),因此不允许使用COUNT(DISTINCT),否则会产生错误。

4、DISTINCT可以用于MAX()、MIN(),但这样做实际上没有价值,一个列中的最小值和最大值是否包含不同值都是相同的。

语法举例

---返回id为1002商品的各个不同价格的平均价值
SELECT AVG(DISTINCT price)
FROM products
WHERE id = 1002;

组合聚集函数

SELECT语句可根据需要包含多个聚集函数。

语法举例

---返回商品的种类数量,商品的平均价格,最贵商品的价格,最便宜商品的价格,所有商品的总价值
SELECT COUNT(*), AVG(price), MAX(price), MIN(price), SUM(price)
FROM products;

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/82990013