添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
【SQL】 添加汇总行的两种方法

【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