using aggragrate functions for reporting

Published on by LakshmiSaahul,Dhana Royal

Advanced Grouping in oracle, more helpful for report generate.

SQL> SELECT * FROM EMP;

-- GROUP BY CLAUSE

SQL> SELECT deptno, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY dep
tno;

-- ROLLUP

SQL> SELECT deptno, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY deptno
UNION ALL
SELECT NULL, SUM(sal)
FROM emp WHERE
sal <= 4000;

SQL> SELECT deptno, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY ROLLUP(de
ptno);

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY deptno
, job;

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY ROLLUP(deptno,
job);

-- CUBE

SQL> SELECT deptno, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY CUBE(de
ptno);

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY CUBE(deptno,
job);

-- GROUPING

SQL> SELECT deptno, job, SUM(sal), GROUPING(DEPTNO) G_DNO, GROUPING(JOB) G_JOB
FROM emp WHERE sal <= 4000
GROUP BY ROLLUP(deptno,
job);

SQL> SELECT deptno, job, SUM(sal), GROUPING(DEPTNO) G_DNO, GROUPING(JOB) G_JOB
FROM emp WHERE sal <= 4000
GROUP BY CUBE(deptno,
job);

-- GROUPING SETS

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY ROLLUP(deptno,
job);

SQL> SELECT deptno, JOB, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY GROUPING SETS((DEPTNO), (DEPTNO, JOB)
, ());

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY CUBE(deptno,
job);

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY GROUPING SETS((DEPTNO), (JOB), (DEPTNO, JOB)
, ());

SQL> SELECT deptno, job, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY GROUPING SETS((DEPTNO), (JOB)
, ());

SQL> SELECT TO_CHAR(deptno), SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY DEPTNO
UNION ALL
SELECT JOB, SUM(sal)
FROM emp WHERE sal <= 4000
GROUP BY JOB
UNION ALL
SELECT NULL, SUM(sal)
FROM e
mp WHERE sal <= 4000;

Advertising
To be informed of the latest articles, subscribe:
Comment on this post