Cách nhóm các hàng có cùng giá trị lại với nhau GROUP BY
Trong MySQL, câu lệnh GROUP BY được sử dụng để nhóm các dòng dữ liệu có cùng giá trị của một hoặc nhiều cột lại với nhau. Câu lệnh GROUP BY thường đi kèm với các hàm tổng hợp như COUNT, SUM, AVG, MAX, MIN để tính toán dữ liệu nhóm.
Cú pháp của GROUP BY trong MySQL#
Cú pháp chung của câu lệnh sử dụng GROUP BY như sau:
SELECT column1, column2, ..., aggregate_function(column) FROM table_name GROUP BY column1, column2, ...;
Trong đó:
column1, column2, ...: là các cột bạn muốn sử dụng để nhóm dữ liệu.aggregate_function(column): là các hàm tổng hợp nhưCOUNT,SUM,AVG,MAX,MINáp dụng cho từng nhóm dữ liệu.table_name: là tên của bảng bạn muốn truy vấn.
Ví dụ về sử dụng GROUP BY trong MySQL#
Ví dụ 1: Tính tổng số đơn hàng của mỗi khách hàng
Giả sử bạn có một bảng orders với các cột customer_id và total_amount, và bạn muốn tính tổng số đơn hàng của mỗi khách hàng:
SELECT customer_id, COUNT(*) AS order_count FROM orders GROUP BY customer_id;
Trong trường hợp này:
GROUP BY customer_idnhóm các đơn hàng theocustomer_id.COUNT(*) AS order_counttính tổng số đơn hàng (order_count) cho mỗicustomer_id.
Ví dụ 2: Tính tổng số tiền chi cho mỗi loại sản phẩm
Giả sử bạn có một bảng order_details với các cột product_id và unit_price, và bạn muốn tính tổng số tiền chi cho mỗi loại sản phẩm:
SELECT product_id, SUM(unit_price) AS total_spent FROM order_details GROUP BY product_id;
Trong trường hợp này:
GROUP BY product_idnhóm các chi tiết đơn hàng theoproduct_id.SUM(unit_price) AS total_spenttính tổng số tiền chi (total_spent) cho mỗiproduct_id.
Lưu ý khi sử dụng GROUP BY trong MySQL#
Các cột được liệt kê trong
SELECTphải được liệt kê trongGROUP BYhoặc là một phần của hàm tổng hợp nhưCOUNT,SUM,AVG,MAX,MIN.Các cột không được sử dụng trong
GROUP BYhoặc là một phần của hàm tổng hợp phải được bao gồm trong hàm tổng hợp để tránh lỗi.
Câu lệnh GROUP BY là một công cụ mạnh mẽ trong MySQL để nhóm dữ liệu dựa trên các giá trị cột nhất định và tính toán các hàm tổng hợp trên các nhóm này. Nó hữu ích trong việc phân tích dữ liệu và truy vấn các tập dữ liệu lớn theo cách có tổ chức.