समस्या:
आपने डेटा को समूहों में एकत्रित किया है, लेकिन आप समूहों में तत्वों की संख्या के आधार पर रिकॉर्ड को अवरोही क्रम में क्रमबद्ध करना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में user
निम्नलिखित कॉलम में डेटा के साथ:id
, first_name
, last_name
, और country
।
आईडी | <थ>प्रथम_नामlast_name | देश | |
---|---|---|---|
1 | लिसा | विलियम्स | इंग्लैंड |
2 | गैरी | एंडर्स | पोलैंड |
3 | टॉम | विलियम्स | पोलैंड |
4 | माइकल | भूरा | फ़्रांस |
5 | सुसान | स्मिथ | यूएसए |
6 | ऐनी | जोन्स | यूएसए |
7 | एली | मिलर | पोलैंड |
आइए अपने उपयोगकर्ताओं पर एक रिपोर्ट बनाएं। हम परिणामों को country
. के आधार पर समूहित करेंगे और प्रत्येक देश के उपयोगकर्ताओं की संख्या गिनें। लेकिन हम उपयोगकर्ताओं की संख्या के आधार पर समूहों को अवरोही क्रम में भी क्रमबद्ध करेंगे। इस तरह, सबसे अधिक उपयोगकर्ताओं वाले देश सबसे ऊपर दिखाई देंगे।
समाधान:
SELECT country, COUNT(id) FROM user GROUP BY country ORDER BY COUNT(id) DESC ;
देश | <थ>गिनती(आईडी)|
---|---|
पोलैंड | 3 |
USA | 2 |
इंग्लैंड | 1 |
फ़्रांस | 1 |
चर्चा:
चयनित रिकॉर्ड को प्रत्येक समूह में तत्वों की संख्या के आधार पर क्रमबद्ध करने के लिए, आप ORDER BY
का उपयोग करते हैं खंड।
पहला कदम GROUP BY
. का उपयोग करना है समूह बनाने के लिए खंड (हमारे उदाहरण में, हम country
. द्वारा समूहित करते हैं कॉलम)। फिर, ORDER BY क्लॉज में, आप कुल फ़ंक्शन COUNT का उपयोग करते हैं, जो आपकी पसंद के कॉलम में मानों की संख्या की गणना करता है; हमारे उदाहरण में, हम COUNT(id)
. के साथ अलग-अलग आईडी गिनते हैं . यह प्रभावी रूप से प्रत्येक समूह में तत्वों की संख्या की गणना करता है। ORDER BY
खंड तब उस गणना के अनुसार समूहों को क्रमबद्ध करता है।
हमेशा की तरह, आप ORDER BY
. के साथ आरोही या अवरोही दोनों क्रमों का उपयोग कर सकते हैं . यदि आप अवरोही क्रम चाहते हैं (जैसा कि इस उदाहरण में है), तो आप DESC
. का उपयोग करें खोजशब्द। आरोही क्रम को किसी कीवर्ड की आवश्यकता नहीं है क्योंकि यह डिफ़ॉल्ट है, लेकिन आप ASC
का उपयोग कर सकते हैं कीवर्ड यदि आप स्पष्ट होना चाहते हैं। यह वही उदाहरण है लेकिन आरोही क्रम में क्रमबद्ध परिणामों के साथ:
समाधान:
SELECT country, COUNT(id) FROM user GROUP BY country ORDER BY COUNT(id);
ये रहा परिणाम:
देश | <थ>गिनती(आईडी)|
---|---|
इंग्लैंड | 1 |
फ़्रांस | 1 |
USA | 2 |
पोलैंड | 3 |