Grouping with GROUP BY · Nhóm với GROUP BY
Grouping rows with GROUP BY
An aggregate like AVG normally summarises the whole table into one number. GROUP BY splits the rows into groups that share a value, and gives one summary row per group:
This gives one row for each form, with that form's count and average.
Nhóm các dòng với GROUP BY
Một hàm tổng hợp như AVG thông thường tóm tắt toàn bộ bảng thành một con số. GROUP BY chia các dòng thành các nhóm chia sẻ cùng một giá trị, và cung cấp một dòng tóm tắt cho mỗi nhóm:
SELECT form, COUNT(*) AS n, ROUND(AVG(score), 2) AS avg_score
FROM student
GROUP BY form;
Điều này tạo ra một dòng cho mỗi form, kèm theo số lượng và giá trị trung bình của lớp đó.
Filtering groups with HAVING
WHERE filters rows before grouping. To filter the groups themselves — using an aggregate — use HAVING:
This keeps only forms with 3 or more students. (WHERE cannot test COUNT(*); HAVING can.)
Lọc nhóm với HAVING
WHERE lọc các dòng trước khi nhóm. Để lọc chính các nhóm — sử dụng hàm tổng hợp — hãy dùng HAVING:
SELECT form, COUNT(*) AS n
FROM student
GROUP BY form
HAVING COUNT(*) >= 3;
Điều này chỉ giữ lại các lớp có 3 học sinh trở lên. (WHERE không thể test COUNT(*); HAVING có thể.)
Common mistakes
- Filter groups with
HAVING, rows withWHERE. - A plain column beside an aggregate must be in
GROUP BY.
Những lỗi thường gặp
- Lọc nhóm bằng
HAVING, lọc dòng bằngWHERE. - Một cột thường bên cạnh hàm tổng hợp phải nằm trong
GROUP BY.
For each form, show the form, the number of students as n, and the average score (2 d.p.) as avg_score. Group by form. · Đối với mỗi form, hiển thị khối, số lượng học sinh là n, và điểm trung bình (2 chữ số thập phân) là avg_score. Nhóm theo form.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Show each form and its student count n, but only for forms with 3 or more students. Use HAVING. · Hiển thị mỗi form và số lượng học sinh n của nó, nhưng chỉ dành cho các khối có 3 hoặc nhiều hơn học sinh. Sử dụng HAVING.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.