ATD - Tự tin chinh phục đỉnh cao nghề nghiệp
Cấu trúc câu lệnh Group by và cách sử dụng trong SQL
Mục lục bài viết

Trong SQL, câu lệnh GROUP BY đóng vai trò quan trọng trong việc nhóm dữ liệu theo một hoặc nhiều cột và thực hiện các phép toán tổng hợp như SUM(), COUNT(), AVG(), MAX(), MIN(). Đây là một công cụ hữu ích giúp tổ chức và phân tích dữ liệu một cách hiệu quả, đặc biệt trong các hệ thống cơ sở dữ liệu lớn. Bài viết này sẽ hướng dẫn chi tiết về cấu trúc, cách sử dụng GROUP BY trong SQL kèm theo những ví dụ cụ thể để bạn có thể áp dụng ngay.
1. Cấu trúc của câu lệnh GROUP BY trong SQL
Câu lệnh GROUP BY được sử dụng trong SQL để nhóm các dòng có giá trị giống nhau trong một hoặc nhiều cột và thực hiện các phép tính tổng hợp trên từng nhóm. Nó thường được kết hợp với các hàm như:
COUNT(): Đếm số dòng trong mỗi nhóm
SUM(): Tính tổng giá trị
AVG(): Tính trung bình
MAX()/MIN(): Tìm giá trị lớn nhất hoặc nhỏ nhất trong nhóm
Xem thêm:
SQL và phân tích dữ liệu: truy vấn nào quan trọng nhất cho Data Analyst?
Data Analytics cho người mới bắt đầu: Các công cụ và phương pháp cần biết
2. Cách sử dụng GROUP BY trong SQL
2.1. Sử dụng GROUP BY với COUNT()
Hàm COUNT() giúp đếm số lượng bản ghi trong mỗi nhóm.
Ví dụ: Đếm số lượng nhân viên trong từng phòng ban
*Yêu cầu: Doanh nghiệp muốn biết mỗi phòng ban hiện có bao nhiêu nhân viên, từ đó đánh giá quy mô và cơ cấu nhân sự.
*Dữ liệu mẫu từ bảng employees:
employee_id | name | department | salary |
1 | Nam | Sales | 800 |
2 | Hoa | Sales | 950 |
3 | Minh | IT | 1200 |
4 | An | IT | 1300 |
5 | Huy | HR | 1000 |
6 | Trang | HR | 1050 |
7 | Long | Finance | 950 |
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
SELECT department: chọn cột phòng ban.
COUNT(employee_id): đếm số lượng nhân viên trong mỗi phòng ban.
GROUP BY department: nhóm dữ liệu theo từng phòng ban (Sales, IT, HR...).
*Kết quả trả về:
department | total_employees |
Sales | 2 |
IT | 2 |
HR | 2 |
Finance | 1 |
*Ý nghĩa: Từ kết quả trên, có thể thấy các phòng Sales, IT, HR đều có 2 nhân viên, trong khi phòng Finance chỉ có 1 người. Thông tin này có thể hỗ trợ phòng nhân sự trong việc cân đối lại nguồn lực, phân bố công việc hoặc lên kế hoạch tuyển dụng.
2.2. Sử dụng GROUP BY với SUM()
Hàm SUM() giúp tính tổng giá trị của một cột trong mỗi nhóm.
*Yêu cầu: Tính tổng lương (salary) của mỗi phòng ban trong công ty.
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
SUM(salary): tính tổng lương của mỗi nhóm phòng ban.
GROUP BY department: nhóm dữ liệu theo phòng ban.
*Kết quả trả về:
department | average_salary |
Sales | 1750 |
IT | 2500 |
HR | 2050 |
Finance | 950 |
*Ý nghĩa: Giúp bộ phận tài chính biết được chi phí lương cho từng phòng để cân đối ngân sách và đưa ra kế hoạch chi tiêu phù hợp.
2.3. Sử dụng GROUP BY với AVG()
Hàm AVG() tính giá trị trung bình trong mỗi nhóm.
*Yêu cầu: Tính mức lương trung bình của từng phòng ban.
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
AVG(salary): tính trung bình lương theo từng phòng ban.
*Kết quả trả về:
department | average_salary |
Sales | 875.0 |
IT | 1250.0 |
HR | 1025.0 |
Finance | 950.0 |
2.4. Sử dụng GROUP BY với MAX() và MIN()
Hàm MAX() và MIN() giúp tìm giá trị lớn nhất hoặc nhỏ nhất trong từng nhóm.
*Yêu cầu: Xác định mức lương cao nhất và thấp nhất ở mỗi phòng ban.
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
MAX(salary), MIN(salary): lấy giá trị lớn nhất và nhỏ nhất trong từng nhóm phòng ban.
*Kết quả trả về:
department | max_salary | min_salary |
Sales | 950 | 800 |
IT | 1300 | 1200 |
HR | 1050 | 1000 |
Finance | 950 | 950 |
*Ý nghĩa: Quản lý có thể nhìn thấy khoảng dao động lương trong cùng một phòng để đánh giá độ công bằng và hợp lý trong hệ thống đãi ngộ..
3. Sử dụng GROUP BY với nhiều cột
Bạn có thể nhóm dữ liệu theo nhiều cột bằng cách liệt kê các cột trong GROUP BY.
*Yêu cầu: Đếm số lượng nhân viên theo từng phòng ban và chức danh (job_title).
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
GROUP BY department, job_title: nhóm theo nhiều cột.
COUNT(*): đếm số bản ghi trong từng nhóm kết hợp.
*Kết quả trả về:
department | job_title | total |
Sales | Sales Executive | 2 |
IT | Developer | 2 |
HR | HR Specialist | 2 |
Finance | Accountant | 1 |
*Ý nghĩa: Hiểu rõ sự phân bố nhân lực theo cả bộ phận và chức vụ để hỗ trợ đánh giá và hoạch định chiến lược nhân sự.
4. Kết hợp GROUP BY với HAVING
Mệnh đề HAVING được sử dụng để lọc kết quả sau khi nhóm dữ liệu.
*Yêu cầu: Tìm các phòng ban có tổng lương chi trả lớn hơn 2000.
*Câu lệnh SQL sử dụng:
*Giải thích câu lệnh:
HAVING dùng để lọc sau khi GROUP BY đã nhóm dữ liệu.
SUM(salary) > 2000: chỉ lấy những phòng có tổng lương trên 2000.
*Kết quả trả về:
department | total_salary |
IT | 2500 |
HR | 2050 |
*Ý nghĩa: Giúp bộ phận quản trị nhận biết những phòng ban đang tiêu tốn ngân sách cao hơn để kiểm tra hiệu quả và năng suất.
Xem thêm:
Kỹ năng cần thiết để trở thành một Data Analyst chuyên nghiệp
Làm chủ dữ liệu lớn - các rào cản và cách tận dụng cơ hội từ Big Data
Microsoft Power BI: Hướng dẫn cơ bản về phân tích và trực quan hoá dữ
5. Lưu ý khi sử dụng GROUP BY
Tất cả các cột trong SELECT phải được đưa vào GROUP BY hoặc sử dụng hàm tổng hợp.
HAVING chỉ được dùng để lọc nhóm dữ liệu sau khi GROUP BY đã thực hiện.
Không thể sử dụng WHERE để lọc dữ liệu trên nhóm, thay vào đó phải dùng HAVING.
Kết luận
Câu lệnh GROUP BY là một công cụ quan trọng trong SQL, giúp tổng hợp và phân tích dữ liệu một cách hiệu quả. Việc kết hợp GROUP BY với các hàm tổng hợp như COUNT(), SUM(), AVG(), MAX(), MIN() giúp tối ưu hóa việc xử lý và truy vấn dữ liệu lớn. Hiểu rõ và sử dụng thành thạo GROUP BY sẽ giúp bạn cải thiện đáng kể kỹ năng làm việc với SQL trong thực tế.
Đăng ký nhận tin

Đăng ký nhận tin mới
Đăng ký nhận tin mới
TRUNG TÂM CÔNG NGHỆ THÔNG TIN VÀ THIẾT KẾ
Chính sách
Thời gian làm việc

Thứ 2 - Thứ 6 (Offline): 7h30 - 11h30, 13h30 - 17h00

Thứ 7 - CN (Online): 7h30 - 11h30, 13h30 - 17h00
Bản quyền © 2024 ATD. Tất cả các quyền được bảo lưu. Được xây dựng với Eraweb.