×

Làm thế nào để nhóm dữ liệu và sử dụng hàm tổng hợp?

Trong MySQL, bạn có thể nhóm một tập dữ liệu dựa trên một hoặc nhiều cột và áp dụng các hàm tổng hợp (như COUNT(), SUM(), AVG(), MAX(), MIN()) trên mỗi nhóm. Điều này được thực hiện sử dụng từ khóa GROUP BY trong câu lệnh SELECT.

Cú pháp cơ bản:

SELECT column_name1, aggregate_function(column_name2)
FROM table_name
GROUP BY column_name1;

Trong đó column_name1 là cột bạn muốn nhóm dữ liệu, aggregate_function(column_name2) là hàm tổng hợp bạn muốn áp dụng cho mỗi nhóm.

Ví dụ:

Giả sử bạn có bảng don_hang với cột thanh_pho (thành phố nơi đặt hàng) và tong_tien (tổng tiền của mỗi đơn hàng). Để tính tổng tiền đơn hàng cho mỗi thành phố, bạn có thể sử dụng:

SELECT thanh_pho, SUM(tong_tien) AS tong_tien_theo_thanh_pho
FROM don_hang
GROUP BY thanh_pho;

Trong truy vấn này, GROUP BY thanh_pho chỉ định rằng kết quả sẽ được nhóm theo cột thanh_pho, và SUM(tong_tien) tính tổng giá trị tong_tien cho mỗi nhóm thanh_pho.

Sử dụng hàm tổng hợp với GROUP BY:

  • COUNT(): Đếm số lượng hàng trong mỗi nhóm.
  • SUM(): Tính tổng giá trị của một cột trong mỗi nhóm.
  • AVG(): Tính giá trị trung bình của một cột trong mỗi nhóm.
  • MAX(): Tìm giá trị lớn nhất của một cột trong mỗi nhóm.
  • MIN(): Tìm giá trị nhỏ nhất của một cột trong mỗi nhóm.

Lưu ý:

Khi sử dụng GROUP BY, mọi cột trong câu lệnh SELECT không được bao gồm trong một hàm tổng hợp phải được liệt kê trong GROUP BY.

Nếu bạn muốn lọc nhóm dữ liệu dựa trên một tiêu chí nhất định (ví dụ: các nhóm có tổng tiền lớn hơn một giá trị cụ thể), bạn có thể sử dụng HAVING sau GROUP BY để áp dụng điều kiện lọc cho các nhóm:

SELECT thanh_pho, SUM(tong_tien) AS tong_tien_theo_thanh_pho
FROM don_hang
GROUP BY thanh_pho
HAVING SUM(tong_tien) > 10000;

Trong ví dụ này, chỉ các thành phố có tổng tiền đơn hàng lớn hơn 10.000 sẽ được hiển thị trong kết quả.

Comments