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

Nhân cột rồi tổng theo nhóm (theo tên khách hàng) trong MySQL?

Sử dụng SUM(column1 * column2) kết hợp GROUP BY để tính tổng thành tiền theo từng khách hàng.

Tạo bảng đơn hàng

mysql> CREATE TABLE DemoTable (
    -> CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName VARCHAR(100),
    -> CustomerItems INT,
    -> CustomerPrice INT
    -> );

Chèn dữ liệu

mysql> INSERT INTO DemoTable(CustomerName, CustomerItems, CustomerPrice) VALUES('Larry', 3, 450);
mysql> INSERT INTO DemoTable(CustomerName, CustomerItems, CustomerPrice) VALUES('Mike', 2, 550);
mysql> INSERT INTO DemoTable(CustomerName, CustomerItems, CustomerPrice) VALUES('Larry', 4, 1000);
mysql> INSERT INTO DemoTable(CustomerName, CustomerItems, CustomerPrice) VALUES('Larry', 1, 100);
mysql> INSERT INTO DemoTable(CustomerName, CustomerItems, CustomerPrice) VALUES('Mike', 5, 200);

Xem dữ liệu chi tiết

mysql> SELECT * FROM DemoTable;
+------------+--------------+---------------+---------------+
| CustomerId | CustomerName | CustomerItems | CustomerPrice |
+------------+--------------+---------------+---------------+
| 1          | Larry        | 3             | 450           |
| 2          | Mike         | 2             | 550           |
| 3          | Larry        | 4             | 1000          |
| 4          | Larry        | 1             | 100           |
| 5          | Mike         | 5             | 200           |
+------------+--------------+---------------+---------------+

Tính tổng tiền mỗi khách (Items × Price rồi SUM)

mysql> SELECT CustomerName, SUM(CustomerItems * CustomerPrice) AS TOTAL_PRICE 
    -> FROM DemoTable 
    -> GROUP BY CustomerName;
+--------------+-------------+
| CustomerName | TOTAL_PRICE |
+--------------+-------------+
| Larry        | 5450        |
| Mike         | 2100        |
+--------------+-------------+

Phân tích tính toán

KháchDòngItemsPriceThành tiền
Larry134501,350
3410004,000
41100100
Tổng Larry5,450
Mike225501,100
552001,000
Tổng Mike2,100

Mở rộng: Thêm số lượng đơn hàng

SELECT 
    CustomerName,
    COUNT(*) AS OrderCount,
    SUM(CustomerItems) AS TotalItems,
    SUM(CustomerItems * CustomerPrice) AS TotalRevenue
FROM DemoTable
GROUP BY CustomerName;