Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में IF शर्त के साथ SUM क्वेरी स्टोर्ड प्रोसीजर में

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 पोर्टेबल है
  • स्टोर्ड प्रोसीजर में पैरामीटर के साथ डायनामिक फ़िल्टरिंग संभव
  • बड़े डेटासेट के लिए इंडेक्स सुनिश्चित करें
  1. MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं? MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं?

    आइए पहले एक स्टोर्ड प्रोसीजर बनाते हैं। MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर बनाने का क्वेरी: use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE=HELLO; SELECT CONCAT(MESSAGE, ,MYSQL!!!!); END //

  1. - MySQL स्टोर्ड प्रोसीजर के अंदर डायनामिक SQL क्वेरी कैसे लागू करें

    समाधान PREPARE, EXECUTE, DEALLOCATE PREPARE स्टेटमेंट का उपयोग करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2033 (Name) VALUES (Chris), (Bob), (David), (Mike); डायनामिक SQL के साथ प्रोसीजर DELIMITER ; कॉल करें CALL dynamic_query(); +----+-------+ | Id | Name | +----+-------+ | 3 | David | +

  1. - Apache के साथ MySQL का उपयोग करना

    आइए समझते हैं कि Apache के साथ MySQL का उपयोग कैसे करें: Apache एक वेब सर्वर सॉफ़्टवेयर है जिसे Apache सॉफ़्टवेयर फाउंडेशन द्वारा विकसित और रखरखाव किया जाता है। यह एक सॉफ़्टवेयर है जो वेब पेज एक्सेस करने के लिए उपयोगकर्ता से अनुरोध लेता है। HTTP अनुरोध पर कुछ सुरक्षा जांच की जाती है और फिर उपयोगक