NULLおよび欠損データを用いたCASE WHEN
メニューを表示するにはスワイプしてください
SQLクエリにおけるNULL値の扱いは、特に実際のデータで欠損や不完全な情報が含まれる場合によく直面する課題。SQLにおいてNULL値は不明または欠損データを表す。このため、NULLを適切に処理しないと、ほとんどの演算が意味のある値ではなくNULLを返すため、予期しない結果につながることがある。CASE WHEN文は、これらの状況に対処するための強力なツールであり、クエリ結果内でNULL値を直接置換したり、フラグ付けしたりすることができる。
1234567SELECT name, CASE WHEN salary IS NULL THEN 'Unknown' ELSE CAST(salary AS VARCHAR) END AS salary_status FROM employees;
上記のクエリは、CASE WHENとIS NULL条件を組み合わせて、欠損している給与データを管理する方法を示している。salary IS NULLという式は、各従業員のsalaryフィールドが欠損しているかどうかを判定する。欠損している場合は文字列'Unknown'を出力し、そうでなければsalaryの値を文字列に変換して表示する。IS NULLを使用する際、CASE WHEN条件は不可欠であり、salary = NULLのような直接比較は期待通りに動作しないため、欠損値を判定する正しい方法はIS NULLである。
12345678SELECT name, department, CASE WHEN department IS NULL THEN 'Missing Department' ELSE 'Department Present' END AS department_flag FROM employees;
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)。
また、COALESCEとCASE WHENを組み合わせることで、より複雑なロジックを構築できる。この方法により、複数のフォールバックオプションを指定したり、欠損データの扱いに異なるルールを適用しつつ、SQLを簡潔かつ明瞭に保てる。
123456789SELECT 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;
1. SQLクエリでNULL値を扱うことが重要な理由は何ですか?
2. departmentが"No Data"の場合はNULLを出力し、それ以外は部門名を表示するCASE WHEN文を完成させてください:
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください