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

Truy vấn MySQL để tính tổng 3 giá trị khác nhau trong một cột hiển thị tổng của mỗi giá trị trong tập kết quả?

Đối với điều này, bạn có thể sử dụng câu lệnh CASE. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable
(
   ProductName varchar(100),
   ProductRating ENUM('1','2','3')
);
Query OK, 0 rows affected (0.50 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable values('Product-1',3);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Product-2',1);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Product-3',2);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Product-1',2);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Product-3',3);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Product-2',2);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Product-3',3);
Query OK, 1 row affected (0.10 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable;

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

+-------------+---------------+
| ProductName | ProductRating |
+-------------+---------------+
| Product-1   | 3             |
| Product-2   | 1             |
| Product-3   | 2             |
| Product-1   | 2             |
| Product-3   | 3             |
| Product-2   | 2             |
| Product-3   | 3             |
+-------------+---------------+
7 rows in set (0.00 sec)

Đây là truy vấn tính tổng 3 giá trị khác nhau trong một cột hiển thị tổng mỗi giá trị trong tập kết quả. Chúng tôi đang bổ sung dựa trên Xếp hạng Sản phẩm -

mysql> select ProductName,
   sum( case when ProductRating=3 then 1 else 0 end ) as Product_3_Rating,
   sum( case when ProductRating=2 then 1 else 0 end ) as Product_2_Rating,
   sum( case when ProductRating=1 then 1 else 0 end ) as Product_1_Rating
   from DemoTable
   group by ProductName;

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

+-------------+------------------+------------------+------------------+
| ProductName | Product_3_Rating | Product_2_Rating | Product_1_Rating |
+-------------+------------------+------------------+------------------+
| Product-1   |                1 |                1 |                0 |
| Product-2   |                0 |                1 |                1 |
| Product-3   |                2 |                1 |                0 |
+-------------+------------------+------------------+------------------+
3 rows in set (0.00 sec)