NULLIFとIIF
CoddyのSQLジャーニー「応用」セクションの一部。レッスン 4/27。
条件に関する便利なヘルパーがもう2つあります。どちらも小さくて便利です。
NULLIF(a, b) は、a = b の場合に NULL を返し、それ以外の場合は a を返します。典型的な用途は、ゼロ除算を防ぐことです。
SELECT total / NULLIF(count, 0) AS average
FROM statscount がゼロの場合、エラーではなく NULL を取得します。
IIF(cond, a, b) は、CASE WHEN cond THEN a ELSE b END の2分岐のショートカットです。選択肢が二つの場合はこれを使い、分岐がさらに多い場合は CASE を使いましょう。
チャレンジ
簡単利用可能なテーブルと列:
matches:id、shots、goals
各試合について、次を返してください:
idconversion:goals * 1.0 / shots。ただし、shotsが0の場合はNULL(NULLIFを使用)verdict:goals > 0の場合は'win'、それ以外の場合は'no goals'(IIFを使用)
idで並べ替えてください。
自分で試してみよう
SELECT id,
-- NULLIFを使用した変換
-- IIFを使用した判定
FROM matches
ORDER BY id
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
応用のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド