In this tutorial, we will learn how to use GROUP BY
clause and grouping row based on columns value.
GROUP BY
Clause is used to divide the records or rows of the table into smaller groups and it is used with the SELECT
statement.GROUP BY
Clause is often used with aggregate functions (COUNT
, MAX
, MIN
, SUM
, AVG
) to group the result-set by one or more columns and get the summary information of every group.GROUP BY
clause follows the WHERE
clause in a SELECT
statement and precedes the ORDER BY
clause.SELECT column1,column2,...columnN
FROM tableName
Where [CONDITION]
GROUP BY column(s)
ORDER BY column(s);
Let us consider three tables "Employee" and "Department" for records
Table Name: Employee
ID | EmpName | City | Country | Gender | Salary | DeptID |
1 | Shankar | Delhi | India | male | 25000 | 1 |
2 | Sourabh | Delhi | India | male | 30000 | 1 |
3 | Ranvijay | Mumbai | India | male | 15000 | 2 |
4 | Kapil | Noida | India | male | 25000 | 3 |
5 | Shalini | Jaipur | India | female | 18000 | 2 |
6 | Rakesh | Faridabad | India | male | 23000 | 1 |
7 | Akshay | Mumbai | India | male | 21000 | 2 |
8 | Sarah | New York | US | female | 76000 | 3 |
9 | Rocky | Noida | India | male | 28000 | 3 |
Table: Department
DeptID | DepartmentName |
1 | IT |
2 | Finance |
3 | HR |
Finding the number of the employee by City using GROUP BY
clause, a query will be:
SELECT COUNT(ID) as 'No. of Employee by City',City
FROM Employee
GROUP BY City;
No. of Employee by City | City |
2 | Delhi |
1 | Faridabad |
1 | Jaipur |
2 | Mumbai |
1 | New York |
2 | Noida |
For finding the number of the employee in each department using GROUP BY
clause with JOIN
, a query will be:
SELECT Dept.DepartmentName,COUNT(Emp.DeptId) AS 'No. of Employee in Each Dept.'
FROM Employee AS Emp
JOIN Department AS Dept ON Emp.DeptId=Dept.DeptID
GROUP BY Dept.DepartmentName,Emp.DeptID;
DepartmentName | No. of Employee in Each Dept. |
IT | 3 |
Finance | 2 |
HR | 2 |