कभी-कभी आपको एक क्वेरी में एकाधिक गणनाओं का चयन करना पड़ सकता है, विभिन्न स्थितियों के लिए एकाधिक गणनाएं प्राप्त करनी पड़ सकती हैं, या विभिन्न मानदंडों के साथ एकाधिक गणनाओं का चयन करना पड़ सकता है। इस लेख में, हम देखेंगे कि 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 | +------+---------+------------+--------+
मान लें कि आप एक ही क्वेरी में कुल संख्या, उत्पाद A ऑर्डर की संख्या और उत्पाद B ऑर्डर की संख्या चाहते हैं।
यहाँ उपरोक्त को पूरा करने के लिए SQL क्वेरी है।
mysql> select count(*) as total_count, count(if(product='A',1,null)) as A_count, count(if(product='B',1,null)) as B_count from product_sales; +-------------+---------+---------+ | total_count | A_count | B_count | +-------------+---------+---------+ | 4 | 2 | 2 | +-------------+---------+---------+
आइए उपरोक्त प्रश्न को विस्तार से देखें।
गिनती(*) कुल गिनती देने के लिए तालिका में सभी पंक्तियों की गणना करता है।
गिनें(अगर(उत्पाद='ए',1,शून्य)) ए_काउंट के रूप में - जब हम गिनती फ़ंक्शन के अंदर एक IF स्थिति का उपयोग करते हैं, तो यह केवल उन पंक्तियों की गणना करेगा जहां स्थिति सत्य है। हमारी शर्त उन पंक्तियों से मेल खाने की है जहां उत्पाद =ए। तो MySQL, केवल उन पंक्तियों की गणना करता है जहां उत्पाद ए है। अन्यथा इसकी गणना नहीं की जाती है (एनयूएलएल के रूप में असाइन किया गया)।
कृपया ध्यान दें, शून्य का उपयोग करना महत्वपूर्ण है यदि स्थिति विफल हो जाती है तो गैर-मिलान वाली पंक्तियों की भी गणना की जाती है।
इसी तरह, हम उन पंक्तियों के लिए गिनती की गणना करते हैं जहां उत्पाद=बी
जैसा कि नीचे दिखाया गया है, आप 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' then 1 else null end) as B_count from product_sales; +-------------+---------+---------+ | total_count | A_count | B_count | +-------------+---------+---------+ | 4 | 2 | 2 | +-------------+---------+---------+
MySQL के लिए एक रिपोर्टिंग टूल की आवश्यकता है? Ubiq मिनटों में डेटा की कल्पना करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!