MySQL’s GROUP BY clause groups rows with identical values in specified columns into summary rows, typically used with aggregate functions like COUNT, SUM, AVG, MAX, or MIN. datacamp
Basic Syntax
The GROUP BY follows SELECT, FROM, and WHERE clauses. Only grouped columns or aggregates appear in SELECT to avoid errors (unless ONLY_FULL_GROUP_BY is disabled). mysqltutorial
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
This counts employees per department. geeksforgeeks
Multiple Columns
Group by several columns for finer granularity, like department and job_title. datacamp
SELECT department, job_title, AVG(salary) AS avg_salary
FROM employees
GROUP BY department, job_title;
HAVING Clause
Filter groups post-aggregation (WHERE filters rows pre-grouping). blog.devart
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
Shows departments with average salary over 50k. tutorialspoint
Common Tips
- ORDER BY after GROUP BY sorts results. w3schools
- WITH ROLLUP adds subtotals. openlamptech.substack
- Use for reports like sales by region. mysqltutorial