CASE स्टेटमेंट से बहु-कॉलम मान गिनती
MySQL में कई कॉलम में किसी विशिष्ट मान की कुल घटनाएँ गिनने के लिए CASE स्टेटमेंट के साथ SUM() का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE countValueMultipleColumnsDemo (
-> Value1 INT, Value2 INT, Value3 INT
-> );
डेटा इन्सर्ट करें:
mysql> INSERT INTO countValueMultipleColumnsDemo VALUES(10, 15, 10), (20, 30, 10), (40, 10, 60);
सभी रिकॉर्ड:
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 15 | 10 | | 20 | 30 | 10 | | 40 | 10 | 60 | +--------+--------+--------+
मान 10 की कुल गिनती (सभी कॉलम में)
mysql> SELECT
-> SUM(CASE WHEN Value1 = 10 THEN 1 ELSE 0 END) +
-> SUM(CASE WHEN Value2 = 10 THEN 1 ELSE 0 END) +
-> SUM(CASE WHEN Value3 = 10 THEN 1 ELSE 0 END) AS TOTAL_COUNT
-> FROM countValueMultipleColumnsDemo;
परिणाम:
+-------------+ | TOTAL_COUNT | +-------------+ | 4 | +-------------+
गणना विवरण:
- Value1 में 10: 1 बार (पंक्ति 1)
- Value2 में 10: 1 बार (पंक्ति 3)
- Value3 में 10: 2 बार (पंक्ति 1, 2)
- कुल: 1 + 1 + 2 = 4
साफ सिंटैक्स (MySQL 8.0+)
SELECT
SUM((Value1 = 10) + (Value2 = 10) + (Value3 = 10)) AS TOTAL_COUNT
FROM countValueMultipleColumnsDemo;
MySQL में बूलियन TRUE=1, FALSE=0 होता है, इसलिए सीधे जोड़ सकते हैं।
डायनामिक कॉलम के लिए (UNPIVOT पैटर्न)
SELECT SUM(cnt) FROM (
SELECT COUNT(*) AS cnt FROM countValueMultipleColumnsDemo WHERE Value1 = 10
UNION ALL
SELECT COUNT(*) FROM countValueMultipleColumnsDemo WHERE Value2 = 10
UNION ALL
SELECT COUNT(*) FROM countValueMultipleColumnsDemo WHERE Value3 = 10
) AS sub;
उपयोग केस: सर्वे डेटा विश्लेषण, मल्टीपल चॉइस उत्तर गिनती, टैग फ्रीक्वेंसी।