हां, MySQL में SUM() के साथ IF() फ़ंक्शन का उपयोग करके आप सशर्त गिनती या योग गणना कर सकते हैं। यह पिवट टेबल, सशर्त एग्रीगेशन, और क्रॉस-टैब रिपोर्ट के लिए शक्तिशाली तकनीक है।
उदाहरण तालिका बनाना
mysql> CREATE TABLE DemoTable (Value INT, Value2 INT);
डेटा डालना
mysql> INSERT INTO DemoTable VALUES (100, 400), (100, 400), (400, 100);
डेटा देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+--------+ | Value | Value2 | +-------+--------+ | 100 | 400 | | 100 | 400 | | 400 | 100 | +-------+--------+
SUM() के साथ IF() का उपयोग करके 100 और 400 की गिनती
mysql> SELECT
-> SUM(IF(Value = 100, 1, 0) + IF(Value2 = 100, 1, 0)) AS Hundred,
-> SUM(IF(Value = 400, 1, 0) + IF(Value2 = 400, 1, 0)) AS FourHundred
-> FROM DemoTable;
आउटपुट:
+---------+--------------+ | Hundred | FourHundred | +---------+--------------+ | 3 | 3 | +---------+--------------+
व्याख्या:
- प्रत्येक पंक्ति के लिए,
IF(Value=100, 1, 0)जांचता है कि Value 100 है या नहीं - दोनों कॉलम (Value, Value2) के लिए जांच करके जोड़ा जाता है
SUM()सभी पंक्तियों के लिए 1s को जोड़ता है- परिणाम: 100 कुल 3 बार आता है (पंक्ति1: Value, पंक्ति2: Value, पंक्ति3: Value2), 400 भी 3 बार
समान विकल्प (CASE):
SELECT
SUM(CASE WHEN Value = 100 THEN 1 ELSE 0 END + CASE WHEN Value2 = 100 THEN 1 ELSE 0 END) AS Hundred,
SUM(CASE WHEN Value = 400 THEN 1 ELSE 0 END + CASE WHEN Value2 = 400 THEN 1 ELSE 0 END) AS FourHundred
FROM DemoTable;
उन्नत उपयोग: मानों का सशर्त योग (गिनती नहीं):
SELECT
SUM(IF(Value > 200, Value, 0)) AS Sum_Greater_200
FROM DemoTable;