Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एकल MySQL क्वेरी में विभिन्न स्थितियों के साथ कई मायने रखता है

आप IF या CASE स्टेटमेंट का उपयोग करके, MySQL में एक ही क्वेरी में विभिन्न स्थितियों या मानदंडों के साथ आसानी से कई काउंट प्राप्त कर सकते हैं। इस लेख में, हम देखेंगे कि MySQL में एकाधिक शर्तों के साथ एकाधिक गणना कैसे प्राप्त करें।


एकल MySQL क्वेरी में अलग-अलग शर्तों के साथ कई काउंट्स

एकल MySQL क्वेरी में विभिन्न स्थितियों के साथ एकाधिक गणना प्राप्त करने के चरण यहां दिए गए हैं।

मान लें कि आपके पास निम्न तालिका है product_sales(id, product, order_date, amount)

mysql> create table product_sales(
     id int,
     product varchar(10),
     order_date date,
     amount int
     );

mysql> insert into product_sales(id, product, order_date, amount)
     values(1, 'A', '2021-01-01', 250),
     (2, 'B', '2021-01-02', 200),
     (3, 'A', '2021-01-03', 150),
     (4, 'B', '2021-01-04', 250);

mysql> select * from product_sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
|    1 | A       | 2021-01-01 |    250 |
|    2 | B       | 2021-01-02 |    200 |
|    3 | A       | 2021-01-03 |    150 |
|    4 | B       | 2021-01-04 |    250 |
+------+---------+------------+--------+

मान लें कि आप कुल गिनती, उत्पाद ए ऑर्डर की संख्या, और उत्पाद बी ऑर्डर की संख्या> 200 एकल क्वेरी में चाहते हैं।

यहाँ उपरोक्त को पूरा करने के लिए SQL क्वेरी है।

mysql> select count(*) as total_count,
        count(if(product='A',1,null)) as A_count,
        count(if(product='B' and amount>200,1,null)) as B_count
        from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

आइए उपरोक्त प्रश्न को विस्तार से देखें।

गिनती(*) कुल गिनती देने के लिए तालिका में सभी पंक्तियों की गणना करता है।

गिनें(अगर(उत्पाद='ए',1,शून्य)) ए_काउंट के रूप में - जब हम गिनती फ़ंक्शन के अंदर एक IF स्थिति का उपयोग करते हैं, तो यह केवल उन पंक्तियों की गणना करेगा जहां स्थिति सत्य है। हमारी शर्त उन पंक्तियों से मेल खाने की है जहां उत्पाद =ए। तो MySQL, केवल उन पंक्तियों की गणना करता है जहां उत्पाद ए है। अन्यथा इसकी गणना नहीं की जाती है (एनयूएलएल के रूप में असाइन किया गया)।

कृपया ध्यान दें, शून्य का उपयोग करना महत्वपूर्ण है यदि स्थिति विफल हो जाती है तो गैर-मिलान वाली पंक्तियों की भी गणना की जाती है।

इसी तरह, हम उन पंक्तियों के लिए गिनती की गणना करते हैं जहां उत्पाद =बी और राशि> 200।

जैसा कि नीचे दिखाया गया है, आप CASE स्टेटमेंट का उपयोग करके भी उपरोक्त परिणाम प्राप्त कर सकते हैं।

mysql> select count(*) as total_count,
 count(case when product='A' then 1 else null end) as A_count,
 count(case when product='B' and amount>200 then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

बोनस पढ़ें :MySQL में COALESCE का उपयोग कैसे करें


Ubiq में अनेक गणनाएं प्राप्त करें

Ubiq रिपोर्टिंग टूल उपरोक्त सभी SQL क्वेरी का समर्थन करता है और SQL परिणामों को अलग-अलग तरीकों से देखना आसान बनाता है। यह आपको MySQL डेटा से डैशबोर्ड और चार्ट बनाने की भी अनुमति देता है। यहाँ ऊपर उल्लिखित SQL क्वेरी है, Ubiq में।

MySQL के लिए एक रिपोर्टिंग टूल की आवश्यकता है? Ubiq मिनटों में डेटा की कल्पना करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - सम्मिलित त्रुटि पर ध्यान न दें:डुप्लिकेट प्रविष्टि

  2. GTID के साथ MySQL 5.6 गैर-GTID से MySQL 5.7 में ऑनलाइन स्थानांतरण

  3. यदि मौजूद है तो मैं कैसे अपडेट करूं, यदि नहीं तो सम्मिलित करें (AKA upsert या merge) MySQL में?

  4. MySQL:ALTER IGNORE TABLE ADD UNIQUE, क्या छोटा किया जाएगा?

  5. SQL जॉइन का परिचय