Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PostgreSQL या Oracle में तिथि के अनुसार ऑर्डर कैसे करें

समस्या:

आप पंक्तियों को तिथि के अनुसार क्रमित करना चाहते हैं।

उदाहरण 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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं जावा/जेडीबीसी का उपयोग करके ओरेकल डेटाबेस में 4000 वर्णों से अधिक लंबी स्ट्रिंग कैसे संग्रहीत करूं?

  2. एसक्यूएल लोडर कमांड निष्पादित करते समय त्रुटि होने पर रोलबैक कैसे करें?

  3. Oracle में उपयोगकर्ता और स्कीमा के बीच अंतर?

  4. ऑरैकल ड्रॉप इंडेक्स अगर मौजूद है

  5. ORA-00904:अमान्य पहचानकर्ता