Lọc với câu lệnh CASE
Hãy tạo danh sách các trận mà đội Bologna của Italy đã thắng! Có khá nhiều đội khác trong hai bảng, nên chìa khóa để viết được truy vấn hữu ích là dùng câu lệnh CASE như một bộ lọc trong mệnh đề WHERE.
Câu lệnh CASE cho phép bạn phân loại dữ liệu mình quan tâm — và loại bỏ dữ liệu không quan tâm. Để làm được điều này, bạn có thể dùng CASE như một bộ lọc trong mệnh đề WHERE để loại các kết quả bạn không muốn thấy.
Bạn có thể thiết lập như sau:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
Về bản chất, bạn có thể dùng CASE như một cột lọc giống bất kỳ cột nào khác trong cơ sở dữ liệu. Khác biệt duy nhất là bạn không đặt bí danh (alias) cho câu lệnh trong WHERE.
Bài tập này là một phần của khóa học
Xử lý dữ liệu trong SQL
Hướng dẫn bài tập
- Dùng
CASEtrong mệnh đềWHEREđể lọc các trận cóhometeam_idlà9857và số bàn sân nhà lớn hơn số bàn sân khách. - Dùng
CASEtrong mệnh đềWHEREđể lọc các trận cóawayteam_idlà9857và số bàn sân khách lớn hơn số bàn sân nhà. - Kết thúc
CASEbằng cách loại các trận mà Bologna không thắng.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
SELECT
season,
date,
home_goal,
away_goal
FROM matches_italy
WHERE
-- Find games where home_goal is more than away_goal
___ ___ hometeam_id = 9857 ___ home_goal ___ away_goal ___ 'Bologna Win'
-- Find games where away_goal is more than home_goal
___ awayteam_id = 9857 ___ away_goal ___ home_goal ___ 'Bologna Win'
-- Exclude games not won by Bologna
___ IS NOT ___;