Use case when and grouping function together : Case Query « Select Query « Oracle PL / SQL






Use case when and grouping function together

   
SQL>
SQL> create table emp
  2  ( empno      NUMBER(4)    constraint E_PK primary key
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , sal       NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2)    default 10
 11  ) ;

Table created.

SQL> insert into emp values(1,'Tom','N',   'TRAINER', 13,date '1965-12-17',  800 , NULL,  20);

1 row created.

SQL> insert into emp values(2,'Jack','JAM', 'Tester',6,date '1961-02-20',  1600, 300,   30);

1 row created.

SQL> insert into emp values(3,'Wil','TF' ,  'Tester',6,date '1962-02-22',  1250, 500,   30);

1 row created.

SQL> insert into emp values(4,'Jane','JM',  'Designer', 9,date '1967-04-02',  2975, NULL,  20);

1 row created.

SQL> insert into emp values(5,'Mary','P',  'Tester',6,date '1956-09-28',  1250, 1400,  30);

1 row created.

SQL> insert into emp values(6,'Black','R',   'Designer', 9,date '1963-11-01',  2850, NULL,  30);

1 row created.

SQL> insert into emp values(7,'Chris','AB',  'Designer', 9,date '1965-06-09',  2450, NULL,  10);

1 row created.

SQL> insert into emp values(8,'Smart','SCJ', 'TRAINER', 4,date '1959-11-26',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(9,'Peter','CC',   'Designer',NULL,date '1952-11-17',  5000, NULL,  10);

1 row created.

SQL> insert into emp values(10,'Take','JJ', 'Tester',6,date '1968-09-28',  1500, 0,     30);

1 row created.

SQL> insert into emp values(11,'Ana','AA',  'TRAINER', 8,date '1966-12-30',  1100, NULL,  20);

1 row created.

SQL> insert into emp values(12,'Jane','R',   'Manager',   6,date '1969-12-03',  800 , NULL,  30);

1 row created.

SQL> insert into emp values(13,'Fake','MG',   'TRAINER', 4,date '1959-02-13',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(14,'Mike','TJA','Manager',   7,date '1962-01-23',  1300, NULL,  10);

1 row created.

SQL>
SQL> select   deptno
  2  ,        case grouping(job)
  3                when 0 then job
  4                when 1 then 'total'
  5           end  job
  6  ,        count(empno) headcount
  7  from     emp
  8  group by ROLLUP(deptno, job);

    DEPTNO JOB       HEADCOUNT
---------- -------- ----------
        10 Manager           1
        10 Designer          2
        10 total             3
        20 TRAINER           4
        20 Designer          1
        20 total             5
        30 Tester            4
        30 Manager           1
        30 Designer          1
        30 total             6
           total            14

11 rows selected.

SQL>
SQL>
SQL> drop table emp;

Table dropped.

SQL>

   
    
    
  








Related examples in the same category

1.You could use the case statement in an SQL statement
2.Combine case with NVL function
3.Combine Case with group by
4.Use the CASE expression and SUM function
5.Use the CASE expression and SUM function to create an order price report
6.case switch based on clob data
7.Use case ... when to output comments for marks
8.Use case when clause to decode value
9.Use case when statement to replace if statement
10.Use case when statement with between ... and
11.Use case when statement with exists and subquery
12.Use case when statement with in()
13.Use case when statement with to_char() like
14.Use case when with comparasion operator
15.A searched CASE statement
16.use case when to control the order index
17.case when count(*) NOT between ... and
18.Rename case when column