खोज…
स्तंभ के मान के आधार पर शीर्ष x पंक्तियों को वापस करने के लिए TOP के साथ ORDER BY का उपयोग करें
इस उदाहरण में, हम GROUP BY का उपयोग करके न केवल दी गई पंक्तियों के प्रकार का निर्धारण कर सकते हैं, बल्कि पंक्तियों को भी लौटा सकते हैं, क्योंकि हम परिणाम सेट को सीमित करने के लिए TOP का उपयोग कर रहे हैं।
मान लें कि हम एक अनाम लोकप्रिय क्यू एंड ए साइट से शीर्ष 5 उच्चतम प्रतिष्ठा वाले उपयोगकर्ताओं को वापस करना चाहते हैं।
बिना आदेश द्वारा
यह क्वेरी डिफ़ॉल्ट रूप से क्रमबद्ध शीर्ष 5 पंक्तियों को लौटाती है, जो इस मामले में "आईडी" है, तालिका में पहला कॉलम (भले ही यह परिणामों में दिखाया गया कॉलम नहीं है)।
SELECT TOP 5 DisplayName, Reputation
FROM Users
रिटर्न ...
प्रदर्शित होने वाला नाम | प्रतिष्ठा |
---|---|
समुदाय | 1 |
ज्योफ डेलगास | 12567 |
जारोद डिक्सन | 11,739 |
जेफ एटवुड | 37,628 |
जोएल स्पोलस्की | 25,784 |
ORDER द्वारा
SELECT TOP 5 DisplayName, Reputation
FROM Users
ORDER BY Reputation desc
रिटर्न ...
प्रदर्शित होने वाला नाम | प्रतिष्ठा |
---|---|
JonSkeet | 865,023 |
डारिन दिमित्रोव | 661,741 |
BalusC | 650,237 |
हंस पसंत | 625,870 |
मार्क ग्रेवल | 601,636 |
टिप्पणियों
SQL के कुछ संस्करण (जैसे कि MySQL) एक SELECT
के अंत में एक LIMIT
क्लॉज का उपयोग करते हैं, उदाहरण के लिए, शुरुआत में TOP
बजाय:
SELECT DisplayName, Reputation
FROM Users
ORDER BY Reputation DESC
LIMIT 5
कई कॉलमों के आधार पर छंटनी
SELECT DisplayName, JoinDate, Reputation FROM Users ORDER BY JoinDate, Reputation
प्रदर्शित होने वाला नाम | शामिल होने की तारीख | प्रतिष्ठा |
---|---|---|
समुदाय | 2008-09-15 | 1 |
जेफ एटवुड | 2008-09-16 | 25,784 |
जोएल स्पोलस्की | 2008-09-16 | 37,628 |
जारोद डिक्सन | 2008-10-03 | 11,739 |
ज्योफ डेलगास | 2008-10-03 | 12567 |
कॉलम संख्या (नाम के बजाय) द्वारा छंटनी
आप कॉलम के नंबर का उपयोग कर सकते हैं (जहां बाएं कॉलम '1' है) यह इंगित करने के लिए कि कॉलम को उसके नाम से कॉलम का वर्णन करने के बजाय किस आधार पर सॉर्ट करना है।
प्रो: यदि आपको लगता है कि यह संभावना है कि आप बाद में कॉलम नाम बदल सकते हैं, तो ऐसा करने से यह कोड नहीं टूटेगा।
Con: यह आम तौर पर क्वेरी की पठनीयता को कम कर देगा (यह तुरंत स्पष्ट हो जाता है कि 'ORDER BY प्रतिष्ठा' का अर्थ क्या है, जबकि 'ORDER BY 14' को कुछ गिनती की आवश्यकता है, शायद स्क्रीन पर उंगली के साथ।)
यह क्वेरी कॉलम नाम Reputation
बजाय चयनित कथन से संबंधित कॉलम स्थिति 3
में जानकारी के आधार पर Reputation
।
SELECT DisplayName, JoinDate, Reputation FROM Users ORDER BY 3
प्रदर्शित होने वाला नाम | शामिल होने की तारीख | प्रतिष्ठा |
---|---|---|
समुदाय | 2008-09-15 | 1 |
जारोद डिक्सन | 2008-10-03 | 11,739 |
ज्योफ डेलगास | 2008-10-03 | 12567 |
जोएल स्पोलस्की | 2008-09-16 | 25,784 |
जेफ एटवुड | 2008-09-16 | 37,628 |
उपनाम द्वारा आदेश
तार्किक क्वेरी प्रोसेसिंग ऑर्डर के कारण, उपनाम का उपयोग क्रम में किया जा सकता है।
SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY jd, rep
और चयनित कथन में स्तंभों के सापेक्ष क्रम का उपयोग कर सकते हैं। ऊपर दिए गए उदाहरण के रूप में एक ही उदाहरण का उपयोग करें और उपनाम का उपयोग करने के बजाय संबंधित क्रम का उपयोग करें जैसे प्रदर्शन नाम के लिए यह 1 है, जद के लिए यह 2 है और इसी तरह
SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY 2, 3
अनुकूलित छँटाई क्रम
विभाग द्वारा इस तालिका Employee
को क्रमबद्ध करने के लिए, आप ORDER BY Department
उपयोग करेंगे। हालाँकि, यदि आप एक अलग प्रकार का क्रम चाहते हैं जो वर्णानुक्रमिक नहीं है, तो आपको Department
मानों को अलग-अलग मानों में मैप करना होगा जो सही ढंग से क्रमबद्ध हों; यह एक CASE अभिव्यक्ति के साथ किया जा सकता है:
नाम | विभाग |
---|---|
हसन | आईटी |
यूसुफ | मानव संसाधन |
हिलेरी | मानव संसाधन |
जो | आईटी |
प्रमुदित | मानव संसाधन |
केन | मुनीम |
SELECT *
FROM Employee
ORDER BY CASE Department
WHEN 'HR' THEN 1
WHEN 'Accountant' THEN 2
ELSE 3
END;
नाम | विभाग |
---|---|
यूसुफ | मानव संसाधन |
हिलेरी | मानव संसाधन |
प्रमुदित | मानव संसाधन |
केन | मुनीम |
हसन | आईटी |
जो | आईटी |