MySQL में CASE और SUM() का उपयोग करके एक क्वेरी में कई मानों की गिनती
जब आपको एक ही कॉलम में अलग-अलग मानों (जैसे 'Male' और 'Female') की गिनती एक साथ चाहिए, तो CASE स्टेटमेंट के साथ SUM() फंक्शन का उपयोग करें।
उदाहरण: कर्मचारियों के लिंग की गिनती
पहले एक डेमो टेबल बनाएं:
CREATE TABLE DemoTable (
EmployeeGender ENUM('Male', 'Female')
);
कुछ रिकॉर्ड डालें:
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
INSERT INTO DemoTable VALUES ('Male');
INSERT INTO DemoTable VALUES ('Female');
सभी रिकॉर्ड देखें:
SELECT * FROM DemoTable;
+----------------+ | EmployeeGender | +----------------+ | Male | | Female | | Male | | Female | | Male | | Female | +----------------+
एक क्वेरी में दोनों की गिनती
SELECT
SUM(CASE WHEN EmployeeGender = 'Male' THEN 1 ELSE 0 END) AS Total_Male,
SUM(CASE WHEN EmployeeGender = 'Female' THEN 1 ELSE 0 END) AS Total_Female
FROM DemoTable;
परिणाम:
+------------+--------------+ | Total_Male | Total_Female | +------------+--------------+ | 3 | 3 | +------------+--------------+
यह कैसे काम करता है?
CASE WHEN EmployeeGender = 'Male' THEN 1 ELSE 0 END— प्रत्येक पंक्ति के लिए 1 लौटाता है यदि लिंग 'Male' है, अन्यथा 0।SUM()— इन 1 और 0 को जोड़कर कुल गिनती देता है।- यही तर्क 'Female' के लिए दोहराया जाता है।
विकल्प: आप COUNT(CASE WHEN ... THEN 1 END) का भी उपयोग कर सकते हैं, क्योंकि COUNT केवल नॉन-NULL मानों को गिनता है।