समस्या:
आप पंक्तियों को तिथि के अनुसार क्रमित करना चाहते हैं।
उदाहरण 1:
exam
टेबल में दो कॉलम होते हैं, subject
और exam_date
।
विषय | परीक्षा_तिथि |
---|---|
गणित | 2019-12-19 |
अंग्रेज़ी | 2020-01-08 |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
कला | शून्य |
आप पंक्तियों को exam_date
. के अनुसार क्रमित करना चाहते हैं ।
समाधान:
SELECT * FROM exam ORDER BY exam_date;
परिणाम इस तरह दिखता है (पंक्तियों को exam_date
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है ):
विषय | परीक्षा_तिथि |
---|---|
गणित | 2019-12-19 |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
अंग्रेज़ी | 2020-01-08 |
कला | शून्य |
चर्चा:
ORDER BY
. का प्रयोग करें कीवर्ड और कॉलम का नाम जिसके द्वारा आप सॉर्ट करना चाहते हैं। इस तरह, आप इस कॉलम के आधार पर डेटा को आरोही क्रम में क्रमबद्ध करेंगे। आप ASC
. का भी उपयोग कर सकते हैं कीवर्ड यह स्पष्ट करने के लिए कि क्रम आरोही है (सबसे पहले की तारीख पहले दिखाई जाती है, नवीनतम तारीख आखिरी दिखाई जाती है, आदि)।
SELECT * FROM exam ORDER BY exam_date ASC;
यदि आप सबसे पहले नवीनतम तिथि और सबसे अंतिम तिथि देखना चाहते हैं, तो आपको अवरोही क्रम में क्रमबद्ध करना होगा। DESC
का उपयोग करें इस मामले में कीवर्ड।
SELECT * FROM exam ORDER BY exam_date DESC;
ध्यान दें कि PostgreSQL और Oracle में, NULL
आरोही क्रम में छँटाई करते समय अंतिम प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय सबसे पहले प्रदर्शित होते हैं। साथ ही, समान exam_date
. वाली पंक्तियां यादृच्छिक क्रम में प्रदर्शित होते हैं (आप Science
देख सकते हैं दूसरा और Health
तीसरा, या स्वास्थ्य दूसरा और Science
तीसरा)।
उदाहरण 2:
exam
तालिका में निम्नलिखित कॉलम हैं:subject
, exam_year
, exam_month
, और exam_day
. महीने नामों में दिए जाते हैं, संख्या में नहीं।
विषय | परीक्षा_वर्ष | परीक्षा_माह | <थ>परीक्षा_दिन|
---|---|---|---|
गणित | 2019 | दिसंबर | 19 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
विज्ञान | 2020 | जनवरी | 5 |
स्वास्थ्य | 2020 | जनवरी | 5 |
कला | शून्य | शून्य | शून्य |
आप परीक्षा तिथि के अनुसार पंक्तियों को क्रमबद्ध करना चाहते हैं।
समाधान:
SELECT * FROM exam ORDER BY exam_year, EXTRACT(MONTH FROM TO_DATE(exam_month, 'Month')), exam_day;
परिणाम इस तरह दिखता है (पंक्तियों को exam_year
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है , exam_month
, और exam_date
):
विषय | परीक्षा_वर्ष | परीक्षा_माह | <थ>परीक्षा_दिन|
---|---|---|---|
गणित | 2019 | दिसंबर | 19 |
स्वास्थ्य | 2020 | जनवरी | 5 |
विज्ञान | 2020 | जनवरी | 5 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
कला | शून्य | शून्य | शून्य |
चर्चा:
आपको पंक्तियों को तीन मानों द्वारा क्रमित करने की आवश्यकता है:वर्ष, महीना और दिन, लेकिन सही क्रम प्राप्त करने के लिए, आपको महीने को एक संख्या ('January
) में बदलने की आवश्यकता है ' से 1
, 'February
' से 2
. तक , आदि।)। अन्यथा, आप देखेंगे 'December
'January
. से पहले '। TO_DATE(exam_month, 'महीना') फ़ंक्शन पूरे महीने के नाम को '0001-MM-01
में एक तारीख में बदल देता है ' प्रारूप। उदाहरण के लिए, आपको '0001-12-01
. मिलता है ' दिसंबर के लिए।
अब आप इस दिनांक मान से माह निकालने के लिए EXTRACT(MONTH FROM date) फ़ंक्शन का उपयोग कर सकते हैं। महीना एक नंबर के रूप में लौटाया जाएगा।
इन दो कार्यों को मिलाकर, आप निम्न सूत्र का उपयोग करके महीने को एक संख्या के रूप में प्राप्त कर सकते हैं:
EXTRACT(MONTH FROM TO_DATE(exam_month, 'Month'))
पंक्तियों को तिथि के अनुसार क्रमबद्ध करने के लिए, आपको वर्ष, महीने और दिन (इस क्रम में) के आधार पर छाँटना होगा। यदि आप सबसे पहले नवीनतम परीक्षा देखना चाहते हैं, तो आपको अवरोही क्रम में क्रमित करना होगा। ऐसा करने के लिए, आपको एक DESC
. का उपयोग करना होगा ORDER BY
. में प्रत्येक कॉलम के बाद कीवर्ड खंड।
SELECT * FROM exam ORDER BY exam_year DESC, EXTRACT(MONTH FROM TO_DATE(exam_month, 'Month')) DESC, exam_day DESC;