Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ NULLおよび欠損データを用いたCASE WHEN | セクション
SQLにおけるCASE WHENの習得

bookNULLおよび欠損データを用いたCASE WHEN

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

SQLクエリにおけるNULL値の扱いは、特に実際のデータで欠損や不完全な情報が含まれる場合によく直面する課題。SQLにおいてNULL値は不明または欠損データを表す。このため、NULLを適切に処理しないと、ほとんどの演算が意味のある値ではなくNULLを返すため、予期しない結果につながることがある。CASE WHEN文は、これらの状況に対処するための強力なツールであり、クエリ結果内でNULL値を直接置換したり、フラグ付けしたりすることができる。

1234567
SELECT name, CASE WHEN salary IS NULL THEN 'Unknown' ELSE CAST(salary AS VARCHAR) END AS salary_status FROM employees;
copy

上記のクエリは、CASE WHENIS NULL条件を組み合わせて、欠損している給与データを管理する方法を示している。salary IS NULLという式は、各従業員のsalaryフィールドが欠損しているかどうかを判定する。欠損している場合は文字列'Unknown'を出力し、そうでなければsalaryの値を文字列に変換して表示する。IS NULLを使用する際、CASE WHEN条件は不可欠であり、salary = NULLのような直接比較は期待通りに動作しないため、欠損値を判定する正しい方法はIS NULLである。

12345678
SELECT name, department, CASE WHEN department IS NULL THEN 'Missing Department' ELSE 'Department Present' END AS department_flag FROM employees;
copy

COALESCE関数

COALESCE関数は、SQLでNULL値を扱うための簡潔な方法を提供。COALESCEは引数の中から最初にNULLでない値を返し、フィールドが欠損している場合のデフォルト値の代入に最適。

CASE WHEN文でNULLを判定する代わりに、COALESCEを直接使用することで、より短く読みやすいクエリが実現可能。

例えば、次の2つの式は同じ結果を返す:

  • CASE WHENを使用: CASE WHEN salary IS NULL THEN 0 ELSE salary END;
  • COALESCEを使用: COALESCE(salary, 0)

また、COALESCECASE WHENを組み合わせることで、より複雑なロジックを構築できる。この方法により、複数のフォールバックオプションを指定したり、欠損データの扱いに異なるルールを適用しつつ、SQLを簡潔かつ明瞭に保てる。

123456789
SELECT name, COALESCE(salary, 50000) AS salary_filled, CASE WHEN COALESCE(salary, 50000) >= 100000 THEN 'High' WHEN COALESCE(salary, 50000) >= 70000 THEN 'Medium' ELSE 'Low' END AS salary_category FROM employees;
copy

1. SQLクエリでNULL値を扱うことが重要な理由は何ですか?

2. departmentが"No Data"の場合はNULLを出力し、それ以外は部門名を表示するCASE WHEN文を完成させてください:

question mark

SQLクエリでNULL値を扱うことが重要な理由は何ですか?

すべての正しい答えを選択

question-icon

departmentが"No Data"の場合はNULLを出力し、それ以外は部門名を表示するCASE WHEN文を完成させてください:

SELECT name, department, CASE WHEN department THEN 'No Data' ELSE department END AS department_status FROM employees;
name | department | department_status
--------------+--------------------+-------------------
Alice Johnson | Engineering | Engineering
Bob Smith | Marketing | Marketing
Carol Lee | Human Resources | Human Resources
David Kim | Engineering | Engineering
Eva Brown | Sales | Sales
Frank White | Finance | Finance
Grace Green | Engineering | Engineering
Henry Black | Marketing | Marketing
Ivy Wilson | Sales | Sales
Jack Miller | Finance | Finance
Karen Davis | Human Resources | Human Resources
Leo Turner | Engineering | Engineering
Mona Scott | Sales | Sales
Nina Adams | Finance | Finance
Oscar Clark | Marketing | Marketing

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

すべて明確でしたか?

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

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

セクション 1.  10

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 1.  10
some-alt