đ SQL Tutorial: GROUP BY and HAVING with Examples (Bangla Style)
GROUP BY and HAVING clauses are very useful in SQL for grouping and filtering data based on aggregation. Below is a practical tutorial using Bangladeshi names.
đ Sample employees
Table:
employee_id | name | department_id | job_id | salary |
---|---|---|---|---|
201 | Arif | 10 | HR | 50000 |
202 | Nasrin | 20 | ENG | 60000 |
203 | Faruk | 10 | HR | 55000 |
204 | Ritu | 30 | MKT | 45000 |
205 | Imran | 20 | ENG | 62000 |
đš 1. Count Employees per Department
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
Output:
department_id | employee_count |
---|---|
10 | 2 |
20 | 2 |
30 | 1 |
đš 2. Departments with More Than 1 Employee
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 1;
Output:
department_id | employee_count |
---|---|
10 | 2 |
20 | 2 |
đš 3. Total Salary by Department
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;
Output:
department_id | total_salary |
---|---|
10 | 105000 |
20 | 122000 |
30 | 45000 |
đš 4. Departments Where Total Salary > 100000
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id
HAVING SUM(salary) > 100000;
Output:
department_id | total_salary |
---|---|
10 | 105000 |
20 | 122000 |
đš 5. Average Salary per Job Title
SELECT job_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY job_id;
Output:
job_id | avg_salary |
---|---|
HR | 52500 |
ENG | 61000 |
MKT | 45000 |
đš 6. Job Titles with More Than 1 Employee
SELECT job_id, COUNT(*) AS emp_count
FROM employees
GROUP BY job_id
HAVING COUNT(*) > 1;
Output:
job_id | emp_count |
---|---|
HR | 2 |
ENG | 2 |
āĻোāύ āĻŽāύ্āϤāĻŦ্āϝ āύেāĻ:
āĻāĻāĻি āĻŽāύ্āϤāĻŦ্āϝ āĻĒোāϏ্āĻ āĻāϰুāύ