MySQL में सशर्त योग (Conditional Sum) के लिए SUM(IF(condition, value, 0)) या SUM(CASE WHEN condition THEN value ELSE 0 END) का उपयोग करें।
टेबल और डेटा
CREATE TABLE SumWithIfCondition (ModeOfPayment VARCHAR(100), Amount INT);
INSERT INTO SumWithIfCondition VALUES
('Offline', 10), ('Online', 100), ('Offline', 20), ('Online', 200), ('Offline', 30), ('Online', 300);
स्टोर्ड प्रोसीजर
DELIMITER //
CREATE PROCEDURE sp_GetSumWithPaymentMode(IN PaymentMode VARCHAR(200))
BEGIN
SELECT PaymentMode, SUM(IF(ModeOfPayment = PaymentMode, Amount, 0)) AS TotalAmount
FROM SumWithIfCondition;
END //
DELIMITER ;
कॉल करें
CALL sp_GetSumWithPaymentMode('Online');
परिणाम: Online, 600
CALL sp_GetSumWithPaymentMode('Offline');
परिणाम: Offline, 60
बेहतर दृष्टिकोण: CASE WHEN (मानक SQL)
SELECT
SUM(CASE WHEN ModeOfPayment = 'Online' THEN Amount ELSE 0 END) AS OnlineTotal,
SUM(CASE WHEN ModeOfPayment = 'Offline' THEN Amount ELSE 0 END) AS OfflineTotal
FROM SumWithIfCondition;
परिणाम: OnlineTotal: 600, OfflineTotal: 60
MySQL 8.0+ FILTER क्लॉज
SELECT
SUM(Amount) FILTER (WHERE ModeOfPayment = 'Online') AS OnlineTotal,
SUM(Amount) FILTER (WHERE ModeOfPayment = 'Offline') AS OfflineTotal
FROM SumWithIfCondition;
नोट
IF()MySQL-विशिष्ट है,CASE WHENपोर्टेबल है- स्टोर्ड प्रोसीजर में पैरामीटर के साथ डायनामिक फ़िल्टरिंग संभव
- बड़े डेटासेट के लिए इंडेक्स सुनिश्चित करें