Mệnh đề GROUP BY dùng để tạo các phân nhóm dữ liệu trên 1 cột hoặc nhiều cột.
2. Cú pháp
SELECT Tên_cột, Hàm_nhóm_dữ_liệu FROM Tên_bảng WHERE Điều_kiện GROUP BY Biểu_thức_nhóm_dữ_liệu HAVING Điều_kiện_lọc_nhóm_dữ_liệu ORDER BY Tên_cột
3. Ví dụ
Sử dụng GROUP BY trên 1 cột:
SELECT Department_id, SUM(Salary) "Tổng lương" FROM EMPLOYEES GROUP BY Department_id ORDER BY Department_id
Sử dụng GROUP BY trên nhiều cột:
SELECT Department_id, Job_id, SUM(Salary) FROM EMPLOYEES GROUP BY Department_id, Job_id ORDER BY Department_id
Một số lưu ý khi sử dụng các hàm nhóm dữ liệu (AVG, COUNT, MAX, MIN, SUM): bất kỳ một cột hay biểu thức trong danh sách của SELECT không phải là hàm nhóm dữ liệu thì phải có mệnh đề GROUP BY.
--Sai: SELECT DEPARTMENT_ID, AVG(SALARY) FROM EMPLOYEES --Đúng: SELECT DEPARTMENT_ID, AVG(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID
Không thể sử dụng mệnh đề WHERE để giới hạn bớt các nhóm; Sử dụng mệnh đề HAVING để lọc bớt các nhóm; Không được phép sử dụng các hàm nhóm dữ liệu trong mệnh đề WHERE.
--Sai: SELECT DEPARTMENT_ID, SUM(SALARY) FROM EMPLOYEES WHERE SUM(SALARY) > 10000 GROUP BY DEPARTMENT_ID ORDER BY DEPARTMENT_ID --Đúng: SELECT DEPARTMENT_ID, SUM(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING SUM(SALARY) > 10000 ORDER BY DEPARTMENT_ID
Dùng mệnh đề WHERE để lọc và Group By để nhóm dữ liệu:
SELECT DEPARTMENT_ID, SUM(SALARY) FROM EMPLOYEES WHERE DEPARTMENT_ID IN(10, 20, 30) GROUP BY DEPARTMENT_ID HAVING SUM(SALARY) > 10000 ORDER BY DEPARTMENT_ID
Tags: GROUP BY
Next story CONVERT – Hàm đổi kiểu dữ liệu
Previous story JOIN – Mệnh đề
Để lại một bình luận Hủy
Email của bạn sẽ không được hiển thị công khai.Các trường bắt buộc được đánh dấu *
Bình luận *
Tên *
Email *
Trang web
Lưu tên của tôi, email, và trang web trong trình duyệt này cho lần bình luận kế tiếp của tôi.