Masalah:
Anda ingin mengurutkan baris berdasarkan tanggal.
Contoh 1:
exam tabel memiliki dua kolom, subject dan exam_date .
| subjek | tanggal_ujian |
|---|---|
| Matematika | 2019-12-19 |
| Bahasa Inggris | 08-01-2020 |
| Ilmu | 05-01-2020 |
| Kesehatan | 05-01-2020 |
| Seni | NULL |
Anda ingin mengurutkan baris berdasarkan exam_date .
Solusi:
SELECT * FROM exam ORDER BY exam_date;
Hasilnya terlihat seperti ini (baris diurutkan dalam urutan menaik berdasarkan exam_date ):
| Subjek | Tanggal Ujian |
|---|---|
| Seni | NULL |
| Matematika | 2019-12-19 |
| Ilmu | 05-01-2020 |
| Kesehatan | 05-01-2020 |
| Bahasa Inggris | 08-01-2020 |
Diskusi:
Gunakan ORDER BY kata kunci dan nama kolom yang ingin Anda urutkan. Dengan cara ini, Anda akan mengurutkan data dalam urutan menaik menurut kolom ini. Anda juga dapat menggunakan ASC kata kunci untuk memperjelas bahwa urutannya naik (tanggal paling awal ditampilkan terlebih dahulu, tanggal terakhir ditampilkan terakhir, dll.).
SELECT * FROM exam ORDER BY exam_date ASC;
Jika Anda ingin melihat tanggal terakhir terlebih dahulu dan tanggal paling awal terakhir, Anda harus mengurutkan dalam urutan menurun. Gunakan DESC kata kunci dalam hal ini.
SELECT * FROM exam ORDER BY exam_date DESC;
Perhatikan bahwa dalam SQLite, NULL s ditampilkan pertama kali saat mengurutkan dalam urutan menaik dan terakhir saat mengurutkan dalam urutan menurun. Juga, baris dengan exam_date yang sama ditampilkan dalam urutan acak (Anda mungkin melihat Science kedua dan Health ketiga, atau Health kedua dan Science ketiga).
Contoh 2:
exam tabel memiliki kolom berikut:subject , exam_year , exam_month , dan exam_day . Bulan ditulis dengan nama, bukan angka.
| subjek | tahun_ujian | ujian_bulan | hari_ujian |
|---|---|---|---|
| Matematika | 2019 | Desember | 19 |
| Bahasa Inggris | 2020 | Januari | 8 |
| Ilmu | 2020 | Januari | 5 |
| Kesehatan | 2020 | Januari | 5 |
| Seni | NULL | NULL | NULL |
Solusi:
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;
Hasilnya terlihat seperti ini (baris diurutkan dalam urutan menaik berdasarkan exam_year , exam_month , dan exam_day ):
| subjek | tahun_ujian | ujian_bulan | hari_ujian |
|---|---|---|---|
| Seni | NULL | NULL | NULL |
| Matematika | 2019 | Desember | 19 |
| Kesehatan | 2020 | Januari | 5 |
| Ilmu | 2020 | Januari | 5 |
| Bahasa Inggris | 2020 | Januari | 8 |
Diskusi:
Untuk mengurutkan baris menurut tanggal ujian, Anda harus mengurutkan terlebih dahulu berdasarkan tahun, lalu menurut bulan numerik (bukan nama bulan), dan terakhir menurut hari. Anda dapat mengonversi nama bulan menjadi bulan numerik dengan CASE WHEN ayat. Setelah CASE kata kunci, tentukan nama kolom. Kemudian, setelah setiap WHEN, nyatakan nilai dalam kolom ini, gunakan kata kunci THEN, dan tentukan nilai baru yang ingin Anda tetapkan, bukan yang lama. Di sini, kolomnya adalah exam_month , nilai saat ini di kolom ini adalah 'January ', 'February ', …, 'December ', dan nilai barunya adalah bulan numerik 1 , 2 , …, 12 . Setelah Anda selesai mengonversi semua nilai, ingatlah untuk menggunakan END kata kunci untuk menutup CASE WHEN ayat. Lihat:
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
Ini adalah bagaimana Anda mengubah nama bulan menjadi nomor bulan. Anda dapat menggunakannya saat mengurutkan baris berdasarkan tanggal, yaitu tahun, bulan numerik, dan hari.
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
Dengan cara ini, Anda dapat mengurutkan baris dalam urutan menaik berdasarkan tanggal. NULL s akan ditampilkan terlebih dahulu. Untuk mengubah urutan turun, gunakan DESC kata kunci setelah setiap kolom di ORDER BY ayat. Berikut tampilan keseluruhan kueri:
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;
Perhatikan bahwa saat mengurutkan dalam urutan menurun di SQLite, NULL s ditampilkan terakhir.