-- 统计每个部门和职位的工资总和,并生成所有可能的分组汇总 SELECT deptno, job, SUM(sal), GROUPING(deptno) FROM tmp_emp WHERE deptno ISNOT NULL GROUPBYCUBE(deptno, job);
6. 找出重复的行
通过分组和 HAVING 子句,可以找出表中重复的行。
示例:
1 2 3 4 5 6 7 8 9 10
-- 创建表 A 并插入数据 CREATE TABLE A ASSELECT*FROM tmp_emp WHERE1<>1; INSERT INTO A(empno, ename) VALUES(9999, 'AAAA'); INSERT INTO A SELECT*FROM tmp_emp WHERE empno =6666;
-- 找出 empno 重复的行 SELECT empno, COUNT(empno) FROM A GROUPBY empno HAVINGCOUNT(empno) >=2;
7. 练习
以下是一些练习题及其解答。
练习 1
查询编号为 20、30 部门的平均工资,并将平均工资大于 2000 的输出,按平均工资排序
1 2 3 4 5 6
SELECTAVG(sal) FROM tmp_emp WHERE deptno IN (20, 30) GROUPBY deptno HAVINGAVG(sal) >2000 ORDERBY1;