MySQL में एक ही क्वेरी में विभिन्न शर्तों के लिए अलग-अलग गिनती (COUNT) प्राप्त करने के लिए CASE स्टेटमेंट को COUNT() के अंदर उपयोग किया जाता है। यह पिवट-टाइप रिपोर्ट के लिए उपयोगी है।
उदाहरण के लिए टेबल बनाना
mysql> CREATE TABLE DemoTable (LastName VARCHAR(100));
डेटा डालना
mysql> INSERT INTO DemoTable VALUES('Smith'), ('Brown'), ('Brown'), ('Smith'), ('Taylor'), ('Taylor'), ('Miller'), ('Miller'), ('Miller');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+----------+ | LastName | +----------+ | Smith | | Brown | | Brown | | Smith | | Taylor | | Taylor | | Miller | | Miller | | Miller | +----------+
CASE के साथ एकाधिक COUNT
mysql> SELECT
-> COUNT(CASE WHEN LastName='Smith' THEN 1 END) AS SmithCount,
-> COUNT(CASE WHEN LastName='Brown' THEN 1 END) AS BrownCount,
-> COUNT(CASE WHEN LastName='Taylor' THEN 1 END) AS TaylorCount,
-> COUNT(CASE WHEN LastName='Miller' THEN 1 END) AS MillerCount
-> FROM DemoTable;
आउटपुट
+------------+------------+-------------+-------------+ | SmithCount | BrownCount | TaylorCount | MillerCount | +------------+------------+-------------+-------------+ | 2 | 2 | 2 | 3 | +------------+------------+-------------+-------------+
व्याख्या: CASE WHEN शर्त पूरी होने पर 1 लौटाता है (COUNT गिनता है), अन्यथा NULL लौटाता है (COUNT अनदेखा करता है)। SUM(CASE WHEN ... THEN 1 ELSE 0 END) भी समान कार्य करता है। MySQL 8.0+ में COUNT(*) FILTER (WHERE ...) सिंटैक्स भी उपलब्ध है।