The SQL GROUP BY clause is used in collaboration with the SELECT statement to arrange identical data into groups. The GROUP BY clause follows the WHERE clause in a SELECT statement and precedes the ORDER BY clause.
Syntax: The basic syntax of GROUP BY clause is given below. The GROUP BY clause must follow the conditions in the WHERE clause and must precede the ORDER BY clause if one is used.
SELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2 ORDER BY column1, column2;
Example: Consider the EMP table having the following records:
empno | ename | job | mgr | hiredate | sal | comm | deptno |
7369 | SMITH | CLERK | 7902 | 1993-06-13 | 800.00 | 0.00 | 20 |
7499 | ALLEN | SALESMAN | 7698 | 1998-08-15 | 1600.00 | 300.00 | 30 |
7521 | WARD | SALESMAN | 7698 | 1996-03-26 | 1250.00 | 500.00 | 30 |
7566 | JONES | MANAGER | 7839 | 1995-10-31 | 2975.00 | 20 | |
7698 | BLAKE | MANAGER | 7839 | 1992-06-11 | 2850.00 | 30 | |
7782 | CLARK | MANAGER | 7839 | 1993-05-14 | 2450.00 | 10 | |
7788 | SCOTT | ANALYST | 7566 | 1996-03-05 | 3000.00 | 20 | |
7839 | KING | PRESIDENT | 1990-06-09 | 5000.00 | 0.00 | 10 | |
7844 | TURNER | SALESMAN | 7698 | 1995-06-04 | 1500.00 | 0.00 | 30 |
7876 | ADAMS | CLERK | 7788 | 1999-06-04 | 1100.00 | 20 | |
7900 | JAMES | CLERK | 7698 | 2000-06-23 | 950.00 | 30 | |
7934 | MILLER | CLERK | 7782 | 2000-01-21 | 1300.00 | 10 | |
7902 | FORD | ANALYST | 7566 | 1997-12-05 | 3000.00 | 20 | |
7654 | MARTIN | SALESMAN | 7698 | 1998-12-05 | 1250.00 | 1400.00 | 30 |
If you want to know the total amount of salary on each job, then GROUP BY query would be as follows:
SELECT JOB, SUM(SAL) FROM EMP GROUP BY JOB;
This would produce the following result:
Job | Sal |
CLERK | 4150 |
SALESMAN | 5000 |
MANAGER | 8275 |
ANALYST | 6000 |