SQL必知必会笔记汇总数据——使用聚合函数
sql必知必会笔记汇总数据——使用聚合函数
有时候我们需要对表中的数据进行汇总,而不需要数据本身,为了方便这些类型的检索,sql给出了5个聚合函数,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 必须使用列名,不能用于计算或表 达式。