始める無料で始める

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_id9857 かつホーム得点がアウェイ得点を上回る試合に絞り込みましょう。
  • CASE 式を WHERE 句内で使い、awayteam_id9857 かつアウェイ得点がホーム得点を上回る試合に絞り込みましょう。
  • 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 ___;
コードを編集して実行