Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách sử dụng đúng WITH ROLLUP trong MySQL để tạo tổng hợp

Cú pháp cơ bản

SELECT yourColumnName1, SUM(yourColumnName2)
FROM yourTableName
GROUP BY yourColumnName1 WITH ROLLUP;

Ví dụ minh họa

mysql> CREATE TABLE DemoTable1622 (
    -> EmployeeCountryName VARCHAR(20),
    -> EmployeeSalary INT
    -> );
Query OK, 0 rows affected (0.44 sec)
mysql> INSERT INTO DemoTable1622 VALUES('US', 4500);
mysql> INSERT INTO DemoTable1622 VALUES('UK', 1500);
mysql> INSERT INTO DemoTable1622 VALUES('AUS', 1700);
mysql> INSERT INTO DemoTable1622 VALUES('UK', 1900);
mysql> INSERT INTO DemoTable1622 VALUES('US', 3900);

Dữ liệu gốc

mysql> SELECT * FROM DemoTable1622;
+---------------------+----------------+
| EmployeeCountryName | EmployeeSalary |
+---------------------+----------------+
| US                  | 4500           |
| UK                  | 1500           |
| AUS                 | 1700           |
| UK                  | 1900           |
| US                  | 3900           |
+---------------------+----------------+

Truy vấn WITH ROLLUP

mysql> SELECT EmployeeCountryName, SUM(EmployeeSalary)
    -> FROM DemoTable1622
    -> GROUP BY EmployeeCountryName WITH ROLLUP;

Kết quả có thêm hàng tổng (NULL)

+---------------------+---------------------+
| EmployeeCountryName | SUM(EmployeeSalary) |
+---------------------+---------------------+
| AUS                 | 1700                |
| UK                  | 3400                |
| US                  | 8400                |
| NULL                | 13500               |
+---------------------+---------------------+

Ý nghĩa: Hàng NULL đại diện cho tổng toàn bộ (Grand Total). Có thể dùng COALESCE(EmployeeCountryName, 'Tổng') để hiển thị đẹp hơn.