CASE 式のフィルタリング
イタリアの Bologna チームが勝利した試合の一覧を作成しましょう。2 つのテーブルには多くのチームが含まれているため、クエリを使いやすくするために、CASE 式を WHERE 句の中のフィルターとして活用しましょう。
CASE 式を使うと、関心のあるデータだけを分類し、不要なデータを除外できます。具体的には、CASE 式を WHERE 句のフィルターとして使用し、不要な結果を除きます。
設定例は次のとおりです。
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
CASE 式は、データベース内の他の列と同様に、フィルターとしても使用できます。唯一の違いは、WHERE 句内ではエイリアス(別名)を付けないという点です。
この演習はコースの一部です
SQL のデータ操作
演習の手順
CASE式をWHERE句内で使い、hometeam_idが9857かつホーム得点がアウェイ得点を上回る試合に絞り込みましょう。CASE式をWHERE句内で使い、awayteam_idが9857かつアウェイ得点がホーム得点を上回る試合に絞り込みましょう。- Bologna が勝利しなかった試合を除外するよう、
CASE式を締めくくってください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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 ___;