三, 聚合与排序
对表进行聚合查询,即使用聚合函数对表中的列进行合计值或者平均值等合计操作。
通常,聚合函数会对null以外的对象进行合计。但是只有count 函数例外,使用count(*) 可以查出包含null在内的全部数据行数。
使用distinct 关键字删除重复值。
1,聚合函数之常见的5个聚合函数
count:计算表中的记录数(行数)
SUM:计算表中数值列的数据合计值
AVG:计算表中数值列的数据平均值
MAX:求出表中任一列中数据的最大值
MIN:求出表中任意列中数据的最小值
如上,用于合计的函数称为聚合函数或者集合函数。所谓聚合,就是将多行汇总为一行。实际上,所有的聚合函数都是这样,输入多行输出一行
1)
a, 如下,我们要获取如下原始数据表中全部数据的行数。
如上,一共有8行数据,所以我们获取到的结果应该是8.
如下 count(*) 中的 * 表示全部列
b, 计算null以外数据的行数
如上,查询的是全部数据(所有列的)行数,但是如果想要查询某个列(比如该列可能存在null 数据) 的行数,该怎么做呢?
比如想得到shiire_tanka 列(进货单价)中非空行数的列,,可以通过将对象列设定为参数来实现
Note:
Count 函数的结果根据参数不同而不同。count(*)会得到该表格包含null数据的所有行数,而count(某个列名)得到的是该列中,除了null之外的数据的行数。
Count 函数也是唯一一个可以以星号 * 为参数的函数,
2) 计算合计值
例如,我们需要计算销售单价的合计值,即销售单价列,所有数值加起来的总和。
1000 + 4000 + 3000 + 6800 + 500 + 880 + 100 = 16280
Note: 之前我们提到,含有null 的算术运算符中,如果数据含有null,则最终运算结果为null,但如上,最终结果并不为null,而是我们日常生活中所理解的正常的数值。其原因为,聚合函数,除了count 函数外,其他几个聚合函数在最终计算时都会将null 数据提前排除在外。因此不会看到null的结果,这也证明我们之前的描述的正确性。 所谓count函数例外,是说count在参数为星号 * 时,会将null结果计算在内。
3)计算平均值
如我们要获取销售单价的平均值
注意,如上,hanbai_tanka 结果值是16280,如果按照8行为除数,结果应该是2035,但现在的结果是2325.7143, 是因为该数据的计算是 16280 除以 7 得到的结果,也就是说,计算平均值时,avg 函数会将null 数据所在的行排除掉,计算非null数据的总值,同时将非null数据的行数作为除数