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

MySQL SUM với điều kiện IF trong Stored Procedure

SUM() là hàm tổng hợp. Kết hợp với IF() để tính tổng có điều kiện. Ví dụ dùng Stored Procedure.

Tạo bảng SumWithIfCondition:

mysql> CREATE TABLE SumWithIfCondition (
    -> ModeOfPayment VARCHAR(100),
    -> Amount INT
    -> );

Chèn dữ liệu (Online/Offline):

mysql> INSERT INTO SumWithIfCondition VALUES 
('Offline', 10), ('Online', 100), ('Offline', 20), 
('Online', 200), ('Offline', 30), ('Online', 300);

Dữ liệu:

mysql> SELECT * FROM SumWithIfCondition;
+---------------+--------+
| ModeOfPayment | Amount |
+---------------+--------+
| Offline       | 10     |
| Online        | 100    |
| Offline       | 20     |
| Online        | 200    |
| Offline       | 30     |
| Online        | 300    |
+---------------+--------+

Tạo Stored Procedure nhận tham số phương thức thanh toán:

mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_GetSumWithPaymentMode(IN PaymentMode VARCHAR(200))
    -> BEGIN
    ->   SELECT PaymentMode, SUM(IF(ModeOfPayment = PaymentMode, Amount, 0)) AS TotalAmount
    ->   FROM SumWithIfCondition;
    -> END //
mysql> DELIMITER ;

Gọi procedure:

Trường hợp 1: Online

mysql> CALL sp_GetSumWithPaymentMode('Online');
+-------------+-------------+
| PaymentMode | TotalAmount |
+-------------+-------------+
| Online      | 600         |
+-------------+-------------+

Trường hợp 2: Offline

mysql> CALL sp_GetSumWithPaymentMode('Offline');
+-------------+-------------+
| PaymentMode | TotalAmount |
+-------------+-------------+
| Offline     | 60          |
+-------------+-------------+

IF(ModeOfPayment = PaymentMode, Amount, 0) chỉ cộng Amount khi khớp điều kiện, ngược lại cộng 0.