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

Truy vấn tổng MySQL với điều kiện IF sử dụng thủ tục được lưu trữ


Sum () là một hàm tổng hợp trong MySQL. Bạn có thể sử dụng truy vấn tổng với điều kiện if. Để hiểu truy vấn tổng với điều kiện if, chúng ta hãy tạo một bảng.

Truy vấn tạo bảng -

mysql> create table SumWithIfCondition
   −> (
   −> ModeOfPayment varchar(100)
   −> ,
   −> Amount int
   −> );
Query OK, 0 rows affected (1.60 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 SumWithIfCondition values('Offline',10);
Query OK, 1 row affected (0.21 sec)

mysql> insert into SumWithIfCondition values('Online',100);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumWithIfCondition values('Offline',20);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SumWithIfCondition values('Online',200);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumWithIfCondition values('Offline',30);
Query OK, 1 row affected (0.11 sec)

mysql> insert into SumWithIfCondition values('Online',300);
Query OK, 1 row affected (0.17 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 SumWithIfCondition;

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

+---------------+--------+
| ModeOfPayment | Amount |
+---------------+--------+
| Offline       |     10 |
| Online        |    100 |
| Offline       |     20 |
| Online        |    200 |
| Offline       |     30 |
| Online        |    300 |
+---------------+--------+
6 rows in set (0.00 sec)

Đây là thủ tục được lưu trữ lấy một chuỗi làm tham số -

mysql> delimiter //

mysql> create procedure sp_GetSumWithPaymentMode11(PaymentMode varchar(200))
−> begin
−> select PaymentMode,sum(if(ModeOfPayment=PaymentMode,Amount,0)) as TotalAmount from SumWithIfCondition;
−> end //
Query OK, 0 rows affected (0.32 sec)

mysql> delimiter ;

Bây giờ bạn có thể gọi thủ tục đã lưu trữ bằng lệnh gọi.

Trường hợp 1 - Trực tuyến

Truy vấn như sau -

mysql> call sp_GetSumWithPaymentMode11('Online');

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

+-------------+-------------+
| PaymentMode | TotalAmount |
+-------------+-------------+
| Online      |         600 |
+-------------+-------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Trường hợp 2 - Đối với Ngoại tuyến

Truy vấn như sau -

mysql> call sp_GetSumWithPaymentMode11('Offline');

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

+-------------+-------------+
| PaymentMode | TotalAmount |
+-------------+-------------+
| Offline     |          60 |
+-------------+-------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)