欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL必知必会笔记汇总数据——使用聚合函数

程序员文章站 2024-02-08 16:55:46
sql必知必会笔记汇总数据——使用聚合函数   有时候我们需要对表中的数据进行汇总,而不需要数据本身,为了方便这些类型的检索,sql给出了5个...

sql必知必会笔记汇总数据——使用聚合函数

 

有时候我们需要对表中的数据进行汇总,而不需要数据本身,为了方便这些类型的检索,sql给出了5个聚合函数,sql聚合函数在各主要的sql实现中得到了相当一致的支持。如下:

 

SQL必知必会笔记汇总数据——使用聚合函数

 

1.1 avg()函数

 

avg()通过对表中行数计数并计算其列值之和,求得该列的平均值

 

//avg()示例:
select avg(prod_price) as avg_price
from products
where vend_id = 'dll01';

 

 注意:只用于单个列

 

avg()只能用来确定特定数值列的平均值,而且列名必须作为函数参 数给出。为了获得多个列的平均值,必须使用多个avg()函数。

 

 说明:null 值

 

avg()函数忽略列值为null 的行。

 

1.2 count()函数

 

count()可以确定表中行的数目或符合特定条件的行的数目。

 

count()函数的两种使用方式

 

使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值。

使用count(column)对特定列中具有值的行进行计数,忽略null 值。

//示例
select count(*) as num_cust
from customers;

 

说明:null 值

 

如果指定列名,则count()函数会忽略指定列的值为空的行,但如果 count()函数中用的是星号(*),则不忽略。

 

1.3 max()函数

 

max()返回指定列中的最大值。max()要求指定列名

 

//示例
select max(prod_price) as max_price
from products;

 

 

 

提示:对非数值数据使用max()和min()

 

虽然max()一般用来找出最大的数值或日期值,但许多(并非所有) dbms 允许将它用来返回任意列中的最大值,包括返回文本列中的最 大值。在用于文本数据时,max()返回按该列排序后的最后一行。

 

说明:null 值

 

max()和min()函数忽略列值为null 的行。

 

1.4 min()函数

 

min()的功能正好与max()功能相反,它返回指定列的最小值

 

//示例
select min(prod_price) as min_price
from products;

 

 

1.5 sum()函数

 

sum()用来返回指定列值的和(总计)

 

select sum(quantity) as items_ordered
from orderitems
where order_num = 20005;

 

提示:在多个列上进行计算

 

如本例所示,利用标准的算术操作符,所有聚集函数都可用来执行多 个列上的计算。

 

说明:null 值

 

sum()函数忽略列值为null 的行。

 

1.6 聚合不同的值

 

对于上面的五个函数都可以如下使用:

 

对所有行执行计算,指定all 参数或不指定参数(因为all 是默认行为)。

只包含不同的值,指定distinct 参数。

提示:all 为默认

 

all 参数不需要指定,因为它是默认行为。如果不指定distinct,则 假定为all。

 

distinct示例

 

select avg(distinct prod_price) as avg_price
from products
where vend_id = 'dll01';

 

 

注意:distinct 不能用于count(*)

 

如果指定列名,则distinct 只能用于count()。distinct 不能用 于count(*)。类似地,distinct 必须使用列名,不能用于计算或表 达式。