समस्या:
आप पंक्तियों को तिथि के अनुसार क्रमित करना चाहते हैं।
उदाहरण 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;
ध्यान दें कि SQLite में, NULL आरोही क्रम में छँटाई करते समय s पहले प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय अंतिम होते हैं। साथ ही, समान exam_date . वाली पंक्तियां यादृच्छिक क्रम में प्रदर्शित होते हैं (आप Science देख सकते हैं दूसरा और Health तीसरा, या 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,
(CASE exam_month
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
END),
exam_day;
परिणाम इस तरह दिखता है (पंक्तियों को exam_year . द्वारा आरोही क्रम में क्रमबद्ध किया जाता है , exam_month , और exam_day ):
| विषय | परीक्षा_वर्ष | परीक्षा_माह | <थ>परीक्षा_दिन|
|---|---|---|---|
| कला | शून्य | शून्य | शून्य |
| गणित | 2019 | दिसंबर | 19 |
| स्वास्थ्य | 2020 | जनवरी | 5 |
| विज्ञान | 2020 | जनवरी | 5 |
| अंग्रेज़ी | 2020 | जनवरी | 8 |
चर्चा:
परीक्षा तिथि के अनुसार पंक्तियों को क्रमबद्ध करने के लिए, आपको पहले वर्ष के अनुसार क्रमबद्ध करना होगा, फिर संख्यात्मक महीने (महीने का नाम नहीं), और अंत में दिन के अनुसार। आप CASE WHEN . के साथ महीने के नामों को संख्यात्मक महीनों में बदल सकते हैं खंड। CASE के बाद कीवर्ड, कॉलम का नाम निर्दिष्ट करें। फिर, प्रत्येक WHEN के बाद, इस कॉलम में मान बताएं, THEN कीवर्ड का उपयोग करें, और पुराने मान के बजाय वह नया मान निर्दिष्ट करें जिसे आप असाइन करना चाहते हैं। यहां, कॉलम exam_month है , इस कॉलम में वर्तमान मान 'January . हैं ', 'February ',…,'December ', और नए मान संख्यात्मक महीने हैं 1 , 2 , ..., 12 . सभी मानों को कनवर्ट करने के बाद, END . का उपयोग करना याद रखें CASE WHEN बंद करने के लिए कीवर्ड खंड। एक नज़र डालें:
CASE exam_month WHEN 'January' THEN 1 WHEN 'February' THEN 2 WHEN 'March' THEN 3 WHEN 'April' THEN 4 WHEN 'May' THEN 5 WHEN 'June' THEN 6 WHEN 'July' THEN 7 WHEN 'August' THEN 8 WHEN 'September' THEN 9 WHEN 'October' THEN 10 WHEN 'November' THEN 11 WHEN 'December' THEN 12 END
इस तरह आप एक महीने के नाम को एक महीने की संख्या में बदल देते हैं। पंक्तियों को दिनांक, यानी वर्ष, संख्यात्मक महीने और दिन के अनुसार क्रमबद्ध करते समय आप इसका उपयोग कर सकते हैं।
ORDER BY exam_year,
(CASE exam_month
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
END),
exam_day
इस तरह, आप पंक्तियों को तिथि के अनुसार आरोही क्रम में क्रमबद्ध कर सकते हैं। NULL s पहले प्रदर्शित किया जाएगा। क्रम को अवरोही में बदलने के लिए, DESC . का उपयोग करें ORDER BY . में प्रत्येक कॉलम के बाद कीवर्ड खंड। पूरी क्वेरी इस तरह दिखनी चाहिए:
SELECT *
FROM exam
ORDER BY
exam_year DESC,
(CASE exam_month
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
END) DESC,
exam_day DESC;
ध्यान दें कि SQLite में अवरोही क्रम में सॉर्ट करते समय, NULL s अंतिम प्रदर्शित होते हैं।