TRUNG TÂM CÔNG NGHỆ THÔNG TIN VÀ THIẾT KẾ

Lorem Ipsum
Lorem Ipsum

ATD - Tự tin chinh phục đỉnh cao nghề nghiệp

Mục lục bài viết

  1. 1. Cấu trúc của câu lệnh GROUP BY trong SQL
  2. 2. Cách sử dụng GROUP BY trong SQL
    1. 2.1. Sử dụng GROUP BY với COUNT()
    2. 2.2. Sử dụng GROUP BY với SUM()
    3. 2.3. Sử dụng GROUP BY với AVG()
    4. 2.4. Sử dụng GROUP BY với MAX() và MIN()
  3. 3. Sử dụng GROUP BY với nhiều cột
  4. 4. Kết hợp GROUP BY với HAVING
  5. 5. Lưu ý khi sử dụng GROUP BY
Cấu trúc câu lệnh Group by và cách sử dụng trong SQL

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:

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

*Ý nghĩa: Giúp phòng nhân sự xem xét sự chênh lệch mức lương giữa các phòng để điều chỉnh chính sách đãi ngộ.

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:

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ế.



Nhận xét & Bình luận

Đánh giá của Học viên

5/5

Đăng ký nhận tin mới

Đăng ký nhận tin mới

Chính sách

Thời gian làm việc

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

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

Thứ 7 - CN (Online): 7h30 - 11h30, 13h30 - 17h00

Thứ 7 - CN (Online): 7h30 - 11h30, 13h30 - 17h00

Theo dõi

Lorem Ipsum
Lorem Ipsum

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.