Group rows together

Sometimes you need to group blocks of rows in a table and get some information on those groups of rows. For example, to get the average salary for each department


CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
                  ENAME VARCHAR2(10),
                  JOB VARCHAR2(9),
                  SAL NUMBER(7, 2),
                  DEPTNO NUMBER(2));

INSERT INTO EMP VALUES (1, 'SMITH', 'CLERK',     800,    20);
INSERT INTO EMP VALUES (2, 'ALLEN', 'SALESMAN', 1600,    30);
INSERT INTO EMP VALUES (3, 'WARD',  'SALESMAN', 1250,    30);
INSERT INTO EMP VALUES (4, 'JONES', 'MANAGER',  2975,    20);
INSERT INTO EMP VALUES (5, 'MARTIN','SALESMAN', 1250,    30);
INSERT INTO EMP VALUES (6, 'BLAKE', 'MANAGER',  2850,    30);
INSERT INTO EMP VALUES (7, 'CLARK', 'MANAGER',  2850,    10);
INSERT INTO EMP VALUES (8, 'SCOTT', 'ANALYST',  3000,    20);
INSERT INTO EMP VALUES (9, 'KING',  'PRESIDENT',3000,    10);
INSERT INTO EMP VALUES (10,'TURNER','SALESMAN', 1500,    30);
INSERT INTO EMP VALUES (11,'ADAMS', 'CLERK',    1500,    20);


SQL> select avg(sal) from emp group by deptno;

  AVG(SAL)
----------
      1690
   2068.75
      2925

SQL>

Using Multiple Columns in a Group:


SQL> select avg(sal) from emp group by deptno, job;

  AVG(SAL)
----------
      1150
      1400
      2975
      3000
      2850
      2850
      3000

7 rows selected.

SQL>
Home »
Oracle »
Select » 

Group:
  1. Group rows together
  2. WHERE and GROUP BY Clauses
Related: