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

Làm cách nào để lấy tổng cho mọi giá trị khác biệt trong một cột khác trong MySQL?

Bạn có thể lấy tổng cho mọi giá trị riêng biệt trong một cột khác với sự trợ giúp của hàm tổng hợp SUM () với lệnh GROUP BY. Để hiểu khái niệm trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau:

mysql> create table SumOfEveryDistinct
   -> (
   -> Id int not null,
   -> Amount int
   -> );
Query OK, 0 rows affected (0.59 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau:

mysql> insert into SumOfEveryDistinct values(10,100);
Query OK, 1 row affected (0.19 sec)
mysql> insert into SumOfEveryDistinct values(11,200);
Query OK, 1 row affected (0.20 sec)
mysql> insert into SumOfEveryDistinct values(12,300);
Query OK, 1 row affected (0.14 sec)
mysql> insert into SumOfEveryDistinct values(10,400);
Query OK, 1 row affected (0.20 sec)
mysql> insert into SumOfEveryDistinct values(11,500);
Query OK, 1 row affected (0.10 sec)
mysql> insert into SumOfEveryDistinct values(12,600);
Query OK, 1 row affected (0.13 sec)
mysql> insert into SumOfEveryDistinct values(10,700);
Query OK, 1 row affected (0.10 sec)
mysql> insert into SumOfEveryDistinct values(11,800);
Query OK, 1 row affected (0.18 sec)
mysql> insert into SumOfEveryDistinct values(12,900);
Query OK, 1 row affected (0.19 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau:

mysql> select *from SumOfEveryDistinct;

Sau đây là kết quả:

+----+--------+
| Id | Amount |
+----+--------+
| 10 |    100 |
| 11 |    200 |
| 12 |    300 |
| 10 |    400 |
| 11 |    500 |
| 12 |    600 |
| 10 |    700 |
| 11 |    800 |
| 12 |    900 |
+----+--------+
9 rows in set (0.00 sec)

Đây là truy vấn để tính tổng mọi giá trị riêng biệt trong một cột khác:

mysql> select Id, sum(Amount) as TotalSum from SumOfEveryDistinct
   -> group by Id;

Sau đây là kết quả:

+----+----------+
| Id | TotalSum |
+----+----------+
| 10 |     1200 |
| 11 |     1500 |
| 12 |     1800 |
+----+----------+
3 rows in set (0.00 sec)