ネストおよび複数のCASE WHEN条件
メニューを表示するにはスワイプしてください
実際のデータを扱う際には、単純な単一条件のチェックを超えた複雑なロジックを処理する必要がよくあります。複数の基準を同時に評価したり、SQLクエリ内で階層的な意思決定ツリーを構築したりする場面もあります。このような場合、ネストされた、または複数のCASE WHEN文を使用することで、高度なロジックをSQL内で直接表現でき、クエリをさまざまなビジネスルールに柔軟かつ強力に対応させることが可能です。
123456789101112131415161718SELECT name, department, years_at_company, CASE WHEN department = 'Engineering' THEN CASE WHEN years_at_company >= 5 THEN 'Eligible for Senior Bonus' ELSE 'Eligible for Standard Bonus' END WHEN department = 'Sales' THEN CASE WHEN years_at_company >= 3 THEN 'Eligible for Sales Bonus' ELSE 'Not Eligible' END ELSE 'Not Eligible' END AS bonus_eligibility FROM employees;
ネストは、あるCASE WHEN文の中に別のCASE WHEN文を埋め込むことで機能し、最初の条件に基づいて異なるロジックを適用できます。上記のクエリでは、外側のCASEが従業員の部門を判定します。部門が"Engineering"の場合、内側のCASEでyears_at_companyに応じてシニアボーナスまたは標準ボーナスを決定します。部門が"Sales"の場合は、別の内側のCASEで営業ボーナスの資格を判定します。この構造は、意思決定が複数の要素に依存し、それらが階層的に関連している場合に有用です。ロジックが主要なカテゴリごとにサブの判断基準に分かれる場合、ネストを利用するのが適しています。
12345678910SELECT name, salary, CASE WHEN salary >= 100000 THEN 'Executive Band' WHEN salary >= 80000 AND salary < 100000 THEN 'Senior Band' WHEN salary >= 60000 OR department = 'Human Resources' THEN 'Mid Band' ELSE 'Entry Band' END AS salary_band FROM employees;
1. ネストされたCASE WHEN文を使用する主な理由は何か?
2. 1つのCASE WHEN分岐で複数の条件を組み合わせる方法は?
3. years_at_company >= 10 かつ department が 'HR' の場合に 'Veteran' を割り当てるよう空欄を埋めてください。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 7
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 7