【SQL】 添加汇总行的两种方法
问题:统计部门的名称,以及对应的人数, 添加到最后一列汇总
原始结果,没有汇总列:
SELECT D.DNAME,COUNT(*) AS 人数 FROM DEPT D
LEFT JOIN EMP E
ON D.DEPTNO = E.DEPTNO
GROUP BY D.DNAME
方法一原理:
两张表的上下合并Union all,
其中一个表即是原表,还有一个只有一行汇总表
。
我这边添加一个字段名和原表一样,但值等于总结,用As语句赋值。
SELECT '总计' AS DNAME,COUNT(DISTINCT EMPNO)from EMP;
结果将两张表合并一起, 但注意先后顺序 。
SELECT D.DNAME,COUNT(*) AS 人数 FROM DEPT D
LEFT JOIN EMP E
ON D.DEPTNO = E.DEPTNO
GROUP BY D.DNAME
UNION all
SELECT '总计' AS DNAME,COUNT(DISTINCT EMPNO)from EMP;
方法二原理:
用函数Rollup和Nvl空值转换。
SELECT nvl(D.DNAME,'总计') as DNAME,COUNT(*) AS 人数 FROM DEPT D