समस्या:
आप अपने डेटा को दो स्तंभों के आधार पर समूहित करना चाहते हैं ताकि आप कुछ आँकड़ों की गणना कर सकें।
उदाहरण:
order
तालिका, आपके पास कॉलम हैं order_date
, product_id
, customer_id
, और number
. आप प्रत्येक ग्राहक द्वारा प्रतिदिन खरीदे गए उत्पादों की संख्या गिनना चाहेंगे।
order
तालिका इस तरह दिखती है:
order_date | product_id | customer_id | <वें शैली="पृष्ठभूमि-रंग:#cecece">संख्या|
---|---|---|---|
2020-11-25 | 7 | 1 | 1 |
2020-11-25 | 12 | 1 | 3 |
2020-11-26 | 53 | 1 | 2 |
2020-11-26 | 1 | 2 | 4 |
2020-11-26 | 3 | 2 | 1 |
2020-11-26 | 16 | 2 | 7 |
2020-11-26 | 3 | 3 | 2 |
2020-11-27 | 6 | 3 | 1 |
समाधान:
SELECT order_date, customer_id, SUM(number) AS products_number FROM order
नतीजा यह है:
order_date | customer_id | products_number |
---|---|---|
2020-11-26 | 3 | 2 |
2020-11-27 | 3 | 1 |
2020-11-26 | 2 | 12 |
2020-11-25 | 1 | 4 |
2020-11-26 | 1 | 2 |
चर्चा:
दो स्तंभों के आधार पर समूह बनाने के लिए, बस GROUP BY
use का उपयोग करें दो स्तंभों के साथ। कॉलम नामों को GROUP BY
. के बाद सूचीबद्ध किया जाना चाहिए कीवर्ड और अल्पविराम द्वारा अलग किया गया। दोनों स्तंभों के मूल्यों के आधार पर समूह बनाए जाएंगे; मानों के प्रत्येक जोड़े के लिए, एक अलग समूह बनाया जाता है (उदा. ('2020-11-25', 1)
) नीचे दी गई तालिका को देखें, जहां प्रत्येक समूह को एक अलग रंग में प्रस्तुत किया गया है:
order_date | customer_id | product_id | <वें शैली="पृष्ठभूमि-रंग:#cecece">संख्या|
---|---|---|---|
2020-11-25 | 1 | 7 | 1 |
2020-11-25 | 1 | 12 | 3 |
2020-11-26 | 1 | 53 | 2 |
2020-11-26 | 2 | 1 | 4 |
2020-11-26 | 2 | 3 | 1 |
2020-11-26 | 2 | 16 | 7 |
2020-11-26 | 3 | 3 | 2 |
2020-11-27 | 3 | 6 | 1 |
अगर एक या दोनों कॉलम में NULL
है मान, इन मानों को एक अलग समूह के रूप में माना जाता है (उदा., ('2020-11-26', NULL)
, (NULL, 5)
या (NULL, NULL)
)।
दूसरी ओर, यदि NULLs
हैं तो एक कॉलम में जिस पर हम एक समग्र कार्य लागू करते हैं, NULL
मूल्यों को बस छोड़ दिया जाता है। (इस उदाहरण में, समग्र कार्य है SUM()
और कॉलम number
है ) यदि हमारे पास संख्या मान थे 2 , 1 , और नल समूहों में से एक के लिए, SUM(number)
बराबर होगा 3
(2
और 1
एक साथ जोड़े जाते हैं, और NULL
छोड़ा गया है।)
इसी तरह, आप किसी भी संख्या में कॉलम के आधार पर समूह बना सकते हैं - बस GROUP BY
में कॉलम के नाम लिखें। खंड और उन्हें अल्पविराम से अलग करें।