📅  最后修改于: 2021-01-11 11:23:42             🧑  作者: Mango
聚合函数通常用于算术表达式中。聚合函数对一组行进行操作,并向每个组的结果表返回一个数字值。
Teradata支持常见的聚合功能。它们可以与SELECT语句一起使用。
在此示例中,假设以下公司员工的薪水表。
Employee Id | Gross | Deduction | NetPay |
---|---|---|---|
1002 | 12,000 | 2,000 | 10,000 |
1004 | 20,000 | 1,000 | 18,000 |
1003 | 24,000 | 1,000 | 23,000 |
1005 | 30,000 | 00 | 30,000 |
1001 | 40,000 | 3,000 | 37,000 |
COUNT聚合函数用于计算表的记录数。
下面的示例计算上述Salary表中的行数。
SELECT count(*) from Salary;
输出量
5
MAX聚合函数返回表中指定列的最大值。
下面的示例返回最大员工净工资。
SELECT max(NetPay) from Salary;
输出量
37,000
MIN聚合函数返回指定列的最小值。
以下示例从“薪金”表返回最低员工净工资。
SELECT min(NetPay) from Salary;
输出量
10,000
AVG Aggregate函数返回指定列的平均值。
下面的示例从表中返回员工的平均净工资。
SELECT avg(NetPay) from Salary;
输出量
23,600
SUM聚合函数对指定列的值求和。
下面的示例根据“薪金”表计算员工的净薪金总和。
SELECT sum(NetPay) from Salary;
输出量
118,000
由于近似值和舍入误差,涉及浮点数的运算并不总是关联的。例如,(((A + B)+ C)并不总是等于(A +(B + C)))。
浮点算术的非关联性也会影响聚合运算。每当在给定的一组浮点数据上使用聚合函数,每次获得不同的结果。
当Teradata数据库执行聚合时,它将累加计算中涉及的每个AMP的各个术语,并按到达顺序评估这些术语以产生最终结果。
评估的顺序可能会产生略有不同的结果,并且各个AMP完成其工作的顺序是不可预测的,同一系统上相同数据上的聚合函数的结果可能会有所不同。
聚合函数可以出现在以下类型的子句中:
DISTINCT选项指定在处理表达式时不使用的重复值。
以下SELECT返回表中唯一职位的数量。
SELECT COUNT(DISTINCT Deduction) FROM Salary;
输出量
2000
1000
00
3000
一个查询可以具有多个使用DISTINCT和相同表达式的聚合函数,例如:
SELECT SUM(DISTINCT x), AVG(DISTINCT x) FROM Salary;
一个查询也可以具有多个使用不同表达式使用DISTINCT的聚合函数,例如:
SELECT SUM(DISTINCT x), AVG(DISTINCT y) FROM Salary;