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

MySQL में SUM() के साथ सशर्त गणना करके एक पंक्ति में एकाधिक कॉलम में परिणाम प्रदर्शित करना

MySQL में पिवट-शैली सशर्त गणना

एक ही क्वेरी में विभिन्न श्रेणियों के लिए एकाधिक गणना प्राप्त करने और उन्हें एक पंक्ति में अलग-अलग कॉलम के रूप में प्रदर्शित करने के लिए, SUM() के साथ बूलियन अभिव्यक्तियों का उपयोग करें।

उदाहरण: पसंदीदा रंग गिनती

mysql> CREATE TABLE DemoTable1452 (
    -> FavouriteColor VARCHAR(50)
    -> );
Query OK, 0 rows affected (2.42 sec)

mysql> INSERT INTO DemoTable1452 VALUES
    -> ('Red'), ('Yellow'), ('Yellow'), ('Yellow'),
    -> ('Blue'), ('Blue'), ('Red');
Query OK, 7 rows affected (0.31 sec)

mysql> SELECT * FROM DemoTable1452;
+----------------+
| FavouriteColor |
+----------------+
| Red            |
| Yellow         |
| Yellow         |
| Yellow         |
| Blue           |
| Blue           |
| Red            |
+----------------+
7 rows in set (0.00 sec)

सशर्त गणना क्वेरी

mysql> SELECT 
    -> SUM(FavouriteColor = 'Red') AS NumberOfRedColor,
    -> SUM(FavouriteColor = 'Yellow') AS NumberOfYellowColor,
    -> SUM(FavouriteColor = 'Blue') AS NumberOfBlueColor
    -> FROM DemoTable1452;

परिणाम

+------------------+---------------------+-------------------+
| NumberOfRedColor | NumberOfYellowColor | NumberOfBlueColor |
+------------------+---------------------+-------------------+
|                2 |                   3 |                 2 |
+------------------+---------------------+-------------------+
1 row in set (0.27 sec)

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

  • MySQL में, बूलियन अभिव्यक्ति FavouriteColor = 'Red' का मूल्यांकन 1 (सत्य) या 0 (असत्य) के रूप में होता है
  • SUM() इन 1 और 0 को जोड़ता है, प्रभावी रूप से सत्य शर्तों की गिनती करता है
  • प्रत्येक SUM() एक अलग कॉलम बन जाता है

CASE स्टेटमेंट विकल्प

SELECT 
    SUM(CASE WHEN FavouriteColor = 'Red' THEN 1 ELSE 0 END) AS NumberOfRedColor,
    SUM(CASE WHEN FavouriteColor = 'Yellow' THEN 1 ELSE 0 END) AS NumberOfYellowColor,
    SUM(CASE WHEN FavouriteColor = 'Blue' THEN 1 ELSE 0 END) AS NumberOfBlueColor
FROM DemoTable1452;

लाभ

  • एकल टेबल स्कैन: टेबल को केवल एक बार पढ़ता है
  • एक पंक्ति आउटपुट: रिपोर्टिंग/डैशबोर्ड के लिए आसान
  • कोई GROUP BY आवश्यक नहीं: पूरी टेबल का सारांश
  • अनुकूलनीय: आसानी से अधिक श्रेणियां जोड़ें

डायनामिक श्रेणियों के लिए (उन्नत)

यदि श्रेणियाँ अज्ञात हैं, तो एप्लिकेशन कोड में डायनामिक SQL तैयार करें या GROUP_CONCAT के साथ पिवट तर्क का उपयोग करें।

  1. - MySQL में सभी पंक्तियों से मान प्राप्त करें और उन्हें अल्पविराम से अलग करके एक ही पंक्ति में प्रदर्शित करें

    GROUP_CONCAT() का उपयोग करके सभी मानों को एक स्ट्रिंग में संयोजित करना इसके लिए GROUP_CONCAT() का उपयोग करें। GROUP BY क्लॉज का उपयोग न करें, क्योंकि GROUP_CONCAT() बेहतर और त्वरित समाधान है। पहले टेबल बनाएं: create table DemoTable1371 ( Id int, CountryName varchar(40) ); Query OK, 0 rows affected

  1. - MySQL में GROUP BY का उपयोग करके डुप्लिकेट ID गिनना और परिणाम को अलग कॉलम में प्रदर्शित करना

    MySQL में GROUP BY के साथ डुप्लिकेट ID गिनना GROUP BY और एग्रीगेट फ़ंक्शन का उपयोग करके आप डुप्लिकेट ID की गिनती कर सकते हैं और परिणाम को एक अलग कॉलम में प्रदर्शित कर सकते हैं। उदाहरण: ग्राहक समीक्षा गिनती SELECT * FROM DemoTable1453; +------------+----------------------+ | CustomerId | CustomerRe

  1. - MySQL में GROUP_CONCAT() और CONCAT() का उपयोग करके एकाधिक पंक्तियों और कॉलम को एक पंक्ति में संयोजित करना

    MySQL में GROUP_CONCAT() के साथ पंक्तियों को एक स्ट्रिंग में संयोजित करना एकाधिक पंक्तियों और कॉलम को एक स्ट्रिंग में संयोजित करने के लिए, GROUP_CONCAT() (पंक्तियों को जोड़ता है) के साथ CONCAT() (कॉलम को जोड़ता है) का उपयोग करें। उदाहरण: ग्राहक डेटा को एक स्ट्रिंग में संयोजित करना SELECT * FROM De