Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ネストおよび複数のCASE WHEN条件 | セクション
SQLにおけるCASE WHENの習得

bookネストおよび複数のCASE WHEN条件

メニューを表示するにはスワイプしてください

実際のデータを扱う際には、単純な単一条件のチェックを超えた複雑なロジックを処理する必要がよくあります。複数の基準を同時に評価したり、SQLクエリ内で階層的な意思決定ツリーを構築したりする場面もあります。このような場合、ネストされた、または複数のCASE WHEN文を使用することで、高度なロジックをSQL内で直接表現でき、クエリをさまざまなビジネスルールに柔軟かつ強力に対応させることが可能です。

123456789101112131415161718
SELECT 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;
copy

ネストは、あるCASE WHEN文の中に別のCASE WHEN文を埋め込むことで機能し、最初の条件に基づいて異なるロジックを適用できます。上記のクエリでは、外側のCASEが従業員の部門を判定します。部門が"Engineering"の場合、内側のCASEyears_at_companyに応じてシニアボーナスまたは標準ボーナスを決定します。部門が"Sales"の場合は、別の内側のCASEで営業ボーナスの資格を判定します。この構造は、意思決定が複数の要素に依存し、それらが階層的に関連している場合に有用です。ロジックが主要なカテゴリごとにサブの判断基準に分かれる場合、ネストを利用するのが適しています。

12345678910
SELECT 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;
copy

1. ネストされたCASE WHEN文を使用する主な理由は何か?

2. 1つのCASE WHEN分岐で複数の条件を組み合わせる方法は?

3. years_at_company >= 10 かつ department'HR' の場合に 'Veteran' を割り当てるよう空欄を埋めてください。

question mark

ネストされたCASE WHEN文を使用する主な理由は何か?

正しい答えを選んでください

question mark

1つのCASE WHEN分岐で複数の条件を組み合わせる方法は?

正しい答えを選んでください

question-icon

years_at_company >= 10 かつ department'HR' の場合に 'Veteran' を割り当てるよう空欄を埋めてください。

SELECT name, department, years_at_company, CASE WHEN >= AND = '' THEN 'Veteran' ELSE 'Not Veteran' END AS status FROM employees;
No rows will be labeled as 'Veteran' because there are no employees in the 'Human Resources' department with 10 or more years at the company.

クリックまたはドラッグ`n`ドロップして空欄を埋めてください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  7

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  7
some-alt