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

MySQL में एक कॉलम के तीन अलग-अलग मानों का योग करके प्रत्येक का कुल दिखाएं

MySQL में CASE और SUM के साथ पिवट-स्टाइल एग्रीगेशन

जब आपको एक कॉलम के अलग-अलग मानों की गिनती या योग को अलग-अलग कॉलम के रूप में दिखाना हो (पिवट टेबल की तरह), तो CASE के साथ SUM() या COUNT() का उपयोग करें।

उदाहरण: उत्पाद रेटिंग की गिनती

टेबल बनाएं:

CREATE TABLE DemoTable (
    ProductName VARCHAR(100),
    ProductRating ENUM('1', '2', '3')
);

INSERT INTO DemoTable VALUES 
('Product-1', 3), ('Product-2', 1), ('Product-3', 2),
('Product-1', 2), ('Product-3', 3), ('Product-2', 2), ('Product-3', 3);

डेटा:

+-------------+---------------+
| ProductName | ProductRating |
+-------------+---------------+
| Product-1   | 3             |
| Product-2   | 1             |
| Product-3   | 2             |
| Product-1   | 2             |
| Product-3   | 3             |
| Product-2   | 2             |
| Product-3   | 3             |
+-------------+---------------+

प्रत्येक उत्पाद के लिए रेटिंग 1, 2, 3 की गिनती

SELECT 
    ProductName,
    SUM(CASE WHEN ProductRating = '3' THEN 1 ELSE 0 END) AS Rating_3_Count,
    SUM(CASE WHEN ProductRating = '2' THEN 1 ELSE 0 END) AS Rating_2_Count,
    SUM(CASE WHEN ProductRating = '1' THEN 1 ELSE 0 END) AS Rating_1_Count
FROM DemoTable 
GROUP BY ProductName;

परिणाम:

+-------------+----------------+----------------+----------------+
| ProductName | Rating_3_Count | Rating_2_Count | Rating_1_Count |
+-------------+----------------+----------------+----------------+
| Product-1   | 1              | 1              | 0              |
| Product-2   | 0              | 1              | 1              |
| Product-3   | 2              | 1              | 0              |
+-------------+----------------+----------------+----------------+

व्याख्या

  • CASE WHEN ProductRating = '3' THEN 1 ELSE 0 END — रेटिंग 3 के लिए 1, अन्यथा 0
  • SUM() — इन 1 और 0 को जोड़कर गिनती देता है
  • GROUP BY ProductName — प्रत्येक उत्पाद के लिए अलग पंक्ति

आधुनिक विकल्प: FILTER क्लॉज (MySQL 8.0+)

SELECT 
    ProductName,
    COUNT(*) FILTER (WHERE ProductRating = '3') AS Rating_3_Count,
    COUNT(*) FILTER (WHERE ProductRating = '2') AS Rating_2_Count,
    COUNT(*) FILTER (WHERE ProductRating = '1') AS Rating_1_Count
FROM DemoTable 
GROUP BY ProductName;

FILTER क्लॉज अधिक पठनीय और मानक SQL है।

  1. - MySQL में एक ही क्वेरी से अलग-अलग कॉलम मानों में एकाधिक शब्दों को खोजें

    परिचय MySQL में किसी टेबल के कॉलम में एक साथ कई शब्दों को खोजने के लिए WHERE क्लॉज के साथ एकाधिक LIKE ऑपरेटर का उपयोग किया जा सकता है। यह तरीका तब उपयोगी होता है जब आपको किसी टेक्स्ट कॉलम में कई कीवर्ड्स की उपस्थिति जांचनी हो। उदाहरण: टेबल बनाना और डेटा डालना सबसे पहले एक डेमो टेबल बनाते हैं: ); Q

  1. - MySQL में ENUM कॉलम से केवल 'NO' मानों की गणना करें

    MySQL में ENUM कॉलम पर सशर्त गणना के लिए बूलियन अभिव्यक्ति का योग (SUM(condition)) उपयोग कर सकते हैं। MySQL में TRUE = 1 और FALSE = 0 होता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1829 ( Name VARCHAR(20), isTopper ENUM(YES,NO) ); डेटा डालें mysql> INSERT INTO DemoTable1829 VALUES(

  1. - MySQL में पहले तीन पंक्तियों के लिए कस्टम मान सेट करना

    ORDER BY और LIMIT से पहली N पंक्तियां अपडेट करें पहली तीन पंक्तियों के लिए एक विशिष्ट मान सेट करने के लिए ORDER BY और LIMIT 3 का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0.0