Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để nhân các cột và sau đó tính tổng các hàng có các bản ghi tương tự như tên khách hàng?

Để hiểu điều này, chúng ta hãy tạo một bảng với các trường như ID, Tên khách hàng, Mặt hàng, Giá. Đầu tiên chúng ta sẽ nhân các mặt hàng với giá cả. Sau đó, các hàng có bản ghi tương tự, tức là cùng tên khách hàng sẽ được thêm vào.

Đầu tiên chúng ta hãy tạo một bảng:

mysql> create table DemoTable
(
   CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   CustomerName varchar(100),
   CustomerItems int,
   CustomerPrice int
);
Query OK, 0 rows affected (0.54 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',3,450);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Mike',2,550);
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',4,1000);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',1,100);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Mike',5,200);
Query OK, 1 row affected (0.71 sec)

Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng lệnh select:

mysql> select *from DemoTable;

Điều này sẽ tạo ra kết quả sau

+------------+--------------+---------------+---------------+
| CustomerId | CustomerName | CustomerItems | CustomerPrice |
+------------+--------------+---------------+---------------+
|          1 | Larry        |             3 |           450 |
|          2 | Mike         |             2 |           550 |
|          3 | Larry        |             4 |          1000 |
|          4 | Larry        |             1 |           100 |
|          5 | Mike         |             5 |           200 |
+------------+--------------+---------------+---------------+
5 rows in set (0.00 sec)

Đây là truy vấn để nhân các cột (Mặt hàng * Giá) và sau đó tính tổng các hàng có bản ghi tương tự:

mysql> SELECT CustomerName, SUM( CustomerItems* CustomerPrice) AS TOTAL_PRICE FROM DemoTable
GROUP BY CustomerName;

Điều này sẽ tạo ra kết quả sau

+--------------+-------------+
| CustomerName | TOTAL_PRICE |
+--------------+-------------+
| Larry        | 5450        |
| Mike         | 2100        |
+--------------+-------------+
2 rows in set (0.05 sec)