SQL> select ename,empno from emp 2 union all 3 select '总计', count(*) from emp;ENAME EMPNO ---------- ---------- SMITH 7369 ALLEN 7499 WARD 7521 JONES 7566 MARTIN 7654 BLAKE 7698 CLARK 7782 SCOTT 7788 KING 7839 TURNER 7844 ADAMS 7876 JAMES 7900 FORD 7902 MILLER 7934 总计 14已选择15行。
--如果要总计的话,可以使用rollup SELECT decode(GROUPING(ename), 1, '总计', 0, ename) ename, empno, SUM(sal) FROM emp GROUP BY ROLLUP((ename, empno));
加第三行的内容随便写,没什么要求。 除了用union 外有没有效率更高的方法
比union更高?union的效率差在哪呢?
union all --不去掉重复的记录,数据量大的情况下,效率高 union --去掉重复的记录,数据量大的情况下,效率低
2 union all
3 select '总计', count(*) from emp;ENAME EMPNO
---------- ----------
SMITH 7369
ALLEN 7499
WARD 7521
JONES 7566
MARTIN 7654
BLAKE 7698
CLARK 7782
SCOTT 7788
KING 7839
TURNER 7844
ADAMS 7876
JAMES 7900
FORD 7902
MILLER 7934
总计 14已选择15行。
SELECT decode(GROUPING(ename), 1, '总计', 0, ename) ename, empno, SUM(sal)
FROM emp
GROUP BY ROLLUP((ename, empno));
除了用union 外有没有效率更高的方法
union --去掉重复的记录,数据量大的情况下,效率低
楼主的意思是再加上一行标题或注释罢了,你可以把UNION ALL的下一行提上来...