Teradata 学习笔记2

这篇博客详细介绍了Teradata中的分组与聚合函数,包括MIN、MAX、SUM、COUNT和AVG的使用,以及如何结合GROUP BY、HAVING和ORDER BY子句进行复杂的数据分析。文章还讨论了WITH BY和WITH语句在创建小计和总计中的应用,以及集合操作如UNION、INTERSECT和EXCEPT的规则和示例。
摘要由CSDN通过智能技术生成

分组与聚合:

聚合函数
聚合操作用来完成对一组指定数据进行聚合计算,完成聚合计算的函数主要
有:
! MIN 求最小值,计算中忽略空值。
! MAX 求最大值,计算中忽略空值。
! SUM 求合计,计算中忽略空值。
! COUNT 返回个数,计算中包括空值。
! AVG 求平均值,计算中忽略空值。

利用GROUP BY和聚合函数可以实现分组累计。举例来说,如果要求显示各
个部门的薪水合计,可以使用下面的语句。
SELECT department_number
,SUM (salary_amount)
FROM employee
GROUP BY department_number;

需要注意的是,在SELECT子句中不作分组累计的所有字段必须出现在
GROUP BY子句中

以上例来说,Department_Number字段未作累计,因此它必须出现在GROUP
BY子句中。这条基本规则必须牢记。

WHERE子句和GROUP BY子句
WHERE子句和GROUP BY子句同时使用时,GROUP BY只对符合WHERE限
制的数据记录进行分组聚合计算。换言之,在作真正的聚合计算之前,WHERE子
句将不符合条件的数据记录剔除了。
 
例:部门401和403的合计薪水是多少?
SELECT department_number
,SUM (salary_amount)
FROM employee
WHERE department_number IN (401, 403)
GROUP BY department_number
;

GROUP BY和ORDER BY
在GROUP BY后加上ORDER BY,可以使得分组统计按照指定的秩序来显
示。例如,按部门编号顺序显示部门人数、合计薪水、部门最高薪水、部门最底薪
水和部门平均薪水,可以使用下面的SQL语句:
SELECT department_number (TITLE 'DEPT')
,COUNT (*) (TITLE '#_EMPS')
,SUM (salary_amount) (TITLE 'TOTAL')
(FORMAT 'zz,zzz,zz9.99')
,MAX (salary_amount) (TITLE 'HIGHEST')
(FORMAT 'zz,zzz,zz9.99')
,MIN (salary_amount) (TITLE 'LOWEST')
(FORMAT 'zz,zzz,zz9.99')
,AVG (salary_amount) (TITLE 'AVERAGE')
(FORMAT 'zz,zzz,zz9.99')
FROM employee
GROUP BY department_number
ORDER BY department_number
;

当GROUP BY中有多个字段时,它只能产生一个级别
的汇总,而且是按照最后一个字段(这里是job_code)来进行汇总。

GROUP BY和HAVING条件限定
HAVING条件子句是和GROUP一起使用的,用来对分组统计的结果进行限
定,只返回满足其条件的分组统计结果。
举例来说,按部门编号顺序显示部门人数、合计薪水、部门最高薪水、部门
最低薪水和部门平均薪水,条件是只显示部门平均薪水小于36000的部门。
SELECT department_number (TITLE 'DEPT')
,COUNT (*) (TITLE '#_EMPS')
,SUM (salary_amount) (TITLE 'TOTAL')
(FORMAT 'zz,zzz,zz9.99')
,MAX (salary_amount) (TITLE 'HIGHEST')
(FORMAT 'zz,zzz,zz9.99')
,MIN (salary_amount) (TITLE 'LOWEST')
(FORMAT 'zz,zzz,zz9.99)

,AVG (salary_amount) (TITLE 'AVERAGE')

(FORMAT '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值