SQL第9课——汇总数据
(9.21-----9.25在打研究生数模比赛,所以断更了几天,sorry)
SQL的聚集函数,如何利用它们汇总表的数据。
9.1 聚集函数
汇总数据但是不需要实际检索出来,SQL查询可用函数检索数据,以便分析和报表生成。
聚集函数(aggregate function):对某些行运行的函数,计算并返回一个值。
函数 | 说明 |
avg() | 返回某列的平均值 |
count() | 返回某列的行数 |
max() | 列的最大值 |
min() | 列的最小值 |
sum() | 某列之和 |
9.1.1 avg()函数
对行数计数,计算列值之和,得到列的平均值,返回所有列的平均值。
也可以返回特定列或行的平均值。
返回包含Products表中所有产品的平均价格。
下例返回特定供应商所提供产品的平均价格:
!!!avg()函数只能计算一个列的平均值,计算多个列,就需要多个avg()函数;列名必须作为函数参数给出。avg()函数忽略列值为null的行。
9.1.2 count()函数
确定表中行的数目或符合特定条件的行的数目。
1. count(*):计算所有行数,不管是不是空值null;
2. count(column): 对特定列中具有值得行进行计数,忽略null值。
下例只对具有电子邮件地址的客户计数:
9.1.3 max()函数
返回指定列中的最大值,要求指定列名。
在用于文本数据时,max()返回按该列排序后的最后一行。max()忽略列值为null的行。
9.1.4 min()函数
在用于文本数据时,min()返回该列排序后最前面一行。
9.1.5 sum()函数
返回指定列值的和(总计):检索所订购物品的总数(所有quantity值之和)
sum(quantity)返回订单中所有物品数量之和,where子句保证只统计某个物品订单中的物品。
sum()也可以用来合计计算值,合计每项物品的item_price*quantity,得出总得订单金额:
sum()函数忽略列值为null的行。
9.2 聚集不同值
以上5个聚集函数都可以如下使用:
1. 对所有行执行计算,指定all参数或不指定参数(因为all是默认行为)
2. 只包含不同的值,指定distinct参数。
使用了distinct参数,平均值只考虑各个不同的价格
distinct只能用于count(),不能用于count(*)。distinct必须使用列名,不能用于计算或表达式;
支持对查询结果的子集进行计算的top和top percent。
9.3 组合聚集函数
指定列名包含结果,不能使用表中实际的列名。因为许多SQL实现不支持,可能会产生模糊的错误消息。