CASE trong ORDER BY
Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 2 trên 27.
CASE không chỉ dùng cho SELECT. Bạn có thể đặt nó bên trong ORDER BY để sắp xếp các hàng theo quy tắc tùy chỉnh mà chỉ các cột thôi không thể thể hiện.
SELECT name, status
FROM tickets
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'high' THEN 2
WHEN 'normal' THEN 3
ELSE 4
ENDHãy chú ý dạng viết ngắn hơn: CASE column WHEN value THEN .... Dạng này tương đương với WHEN column = value. Hãy dùng cách nào dễ đọc hơn.
Thử thách
DễCác bảng và cột hiện có:
tasks:id,title,priority
Trả về title và priority, sắp xếp sao cho 'critical' đứng đầu, tiếp theo là 'high', rồi đến 'low', các giá trị khác đứng cuối. Với cùng mức độ ưu tiên, hãy sắp xếp theo thứ tự bảng chữ cái của title.
Tự làm thử
SELECT title, priority
FROM tasks
ORDER BY
-- Thay phần sắp xếp tạm bên dưới bằng một biểu thức CASE để
-- xếp hạng các hàng theo yêu cầu của bài, rồi sắp xếp các hàng cùng hạng theo thứ tự bảng chữ cái
id
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản
6Công thức phân tích dữ liệu
Top N trong mỗi nhómTỷ lệ trên tổngTổng lũy kếGiữ lại một hàng cho mỗi khóaÔn tập: khách hàng hàng đầuTự luyện tập: Playground SQL