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

MySQL में CASE WHEN के साथ काउंट कैसे करें?

MySQL में शर्ती गिनती (कंडीशनल काउंट) करने के लिए SUM(CASE WHEN ... THEN 1 ELSE 0 END) पैटर्न का उपयोग करें। यह एक ही क्वेरी में एकाधिक शर्तों की गिनती करने का कुशल तरीका है।

उदाहरण: विशिष्ट मार्क्स की गिनती प्रति छात्र

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1910 (
    FirstName VARCHAR(20),
    Marks INT
);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1910 VALUES
('Chris', 45), ('David', 85), ('Chris', 55), ('Chris', 98), ('David', 98);

डेटा:

+-----------+-------+
| FirstName | Marks |
+-----------+-------+
| Chris     | 45    |
| David     | 85    |
| Chris     | 55    |
| Chris     | 98    |
| David     | 98    |
+-----------+-------+

CASE WHEN के साथ कंडीशनल काउंट:

mysql> SELECT FirstName,
    SUM(CASE WHEN Marks = 45 THEN 1 ELSE 0 END) AS count_45,
    SUM(CASE WHEN Marks = 98 THEN 1 ELSE 0 END) AS count_98
FROM DemoTable1910
GROUP BY FirstName;

आउटपुट:

+-----------+----------+----------+
| FirstName | count_45 | count_98 |
+-----------+----------+----------+
| Chris     | 1        | 1        |
| David     | 0        | 1        |
+-----------+----------+----------+

यह कैसे काम करता है

  • CASE WHEN Marks = 45 THEN 1 ELSE 0 END प्रत्येक पंक्ति के लिए 1 या 0 लौटाता है
  • SUM() उन 1s को जोड़ता है = गिनती
  • GROUP BY FirstName प्रति छात्र गिनती देता है

वैकल्पिक: COUNT() के साथ FILTER (MySQL 8.0+ सपोर्ट नहीं करता)

PostgreSQL में: COUNT(*) FILTER (WHERE Marks = 45)

MySQL में SUM(CASE...) मानक तरीका है।

अन्य उपयोगी पैटर्न

रेंज काउंट

SUM(CASE WHEN Marks BETWEEN 90 AND 100 THEN 1 ELSE 0 END) AS distinction_count

NULL गिनती

SUM(CASE WHEN Marks IS NULL THEN 1 ELSE 0 END) AS null_count

बूलियन एक्सप्रेशन (MySQL में TRUE=1, FALSE=0)

SUM(Marks = 98) AS count_98  -- MySQL में काम करता है!

पिवट टेबल / क्रॉस-टैब बनाना

SELECT 
    FirstName,
    SUM(CASE WHEN Marks >= 90 THEN 1 ELSE 0 END) AS '90+',
    SUM(CASE WHEN Marks BETWEEN 70 AND 89 THEN 1 ELSE 0 END) AS '70-89',
    SUM(CASE WHEN Marks < 70 THEN 1 ELSE 0 END) AS 'Below 70'
FROM DemoTable1910
GROUP BY FirstName;

यह पैटर्न रिपोर्टिंग, एनालिटिक्स, और डैशबोर्ड क्वेरीज़ के लिए मौलिक है।

  1. - MySQL में SELECT स्टेटमेंट के अंदर CASE स्टेटमेंट का उपयोग कैसे करें?

    MySQL में CASE WHEN का उपयोग करके सशर्त तर्क MySQL में CASE WHEN अभिव्यक्ति आपको SQL क्वेरीज़ के अंदर सशर्त तर्क (if-else तर्क) लागू करने की अनुमति देती है। यह SELECT, WHERE, ORDER BY, GROUP BY आदि में उपयोग किया जा सकता है। टेबल बनाना ); Query OK, 0 rows affected (0.63 sec) डेटा डालना INSERT IN

  1. - MySQL में WHEN क्लॉज के साथ CASE स्टेटमेंट लागू करें

    MySQL में CASE स्टेटमेंट का उपयोग सशर्त तर्क (conditional logic) लागू करने के लिए किया जाता है। यह आपको SQL क्वेरीज़ में IF-ELSE जैसी कार्यक्षमता प्रदान करता है। सिंटैक्स SELECT *, CASE WHEN आपकी_शर्त THEN आपका_स्टेटमेंट WHEN आपकी_शर्त THEN आपका_स्टेटमेंट ... E

  1. - MySQL में CASE WHEN के विकल्प: IF() फ़ंक्शन का उपयोग

    MySQL में सरल सशर्त तर्क के लिए CASE WHEN के बजाय IF() फ़ंक्शन अधिक संक्षिप्त और पठनीय हो सकता है। सिंटैक्स तुलना CASE WHEN SELECT CASE WHEN PlayerScore = 0 THEN ELSE PlayerScore END FROM DemoTable; IF() - सरल मामलों के लिए SELECT IF(PlayerScore = 0, , PlayerScore) FROM DemoTable; उदाह