Cách thực hiện nhóm và tính toán trên dữ liệu trong MySQL sử dụng câu lệnh GROUP BY và HAVING

Trong MySQL, câu lệnh GROUP BY và HAVING được sử dụng để thực hiện nhóm và tính toán trên dữ liệu trong các truy vấn. Các câu lệnh này cho phép bạn nhóm các hàng dữ liệu theo một hoặc nhiều cột và áp dụng các hàm tính toán trên các nhóm dữ liệu.

Câu lệnh GROUP BY

Cú pháp cơ bản của câu lệnh GROUP BY như sau:

SELECT column1, column2, ..., aggregate_function(column)
FROM table
GROUP BY column1, column2, ...

 

Trong đó:

  • column1, column2, ... là danh sách các cột mà bạn muốn nhóm theo.
  • aggregate_function(column) là một hàm tính toán được áp dụng lên các nhóm dữ liệu. Các hàm tính toán phổ biến bao gồm COUNT, SUM, AVG, MAX, MIN, v.v.

Ví dụ, giả sử chúng ta có một bảng “orders” chứa thông tin về các đơn hàng và chúng ta muốn tính tổng số đơn hàng đã đặt theo từng người dùng. Câu lệnh SQL sẽ như sau:

SELECT user_id, COUNT(*) AS total_orders
FROM orders
GROUP BY user_id;

 

Kết quả trả về sẽ là một danh sách các người dùng (user_id) và tổng số đơn hàng đã đặt (total_orders) cho mỗi người dùng.

MySQL HeatWave - Speed up your OLAP tasks - blog.ordix.de

Câu lệnh HAVING

Câu lệnh HAVING được sử dụng để áp dụng điều kiện lọc trên kết quả của câu lệnh GROUP BY. Cú pháp của câu lệnh HAVING như sau:

SELECT column1, column2, ..., aggregate_function(column)
FROM table
GROUP BY column1, column2, ...
HAVING condition;

 

Trong đó, condition là một biểu thức logic để lọc kết quả của câu lệnh GROUP BY. Ví dụ, nếu chúng ta chỉ muốn lấy các nhóm dữ liệu có tổng số đơn hàng lớn hơn 10, câu lệnh SQL sẽ như sau:

SELECT user_id, COUNT(*) AS total_orders
FROM orders
GROUP BY user_id
HAVING total_orders > 10;

 

Kết quả trả về sẽ chỉ chứa các nhóm dữ liệu có tổng số đơn hàng lớn hơn 10.

How to connect SuperTokens to a MySQL or to a PostgreSQL database - DEV  Community

Thông qua việc kết hợp câu lệnh GROUP BY và HAVING, bạn có thể thực hiện các phân nhóm và tính toán trên dữ liệu trong MySQL theo nhu cầu của mình. Hãy tìm hiểu thêm về các hàm tính toán và điều kiện lọc khác để tận dụng tối đa tiềm năng của câu lệnh GROUP BY và HAVING trong MySQL.