ORACLE MASTER Silver SQL 26ai条件・集計・結合の実行結果オリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiで、次のa、bの値の組はどれか。すべてNUMBERの数値として評価する。 SELECT COALESCE(240 / NULLIF(0, 0), -1) AS a, COALESCE(CAST(NULL AS NUMBER), 0, 99) AS b FROM dual;
A
a=-1、b=0★ 正解
aではNULLの代替値-1を、bでは最初の非NULL値0を返します。数値0とNULLは異なります。
B
a=0、b=99
NULLIF(0,0)は数値0を返しません。またCOALESCEは0をNULLとして飛ばしません。
C
a=NULL、b=0
除算の結果がNULLでも、外側のCOALESCEが代替値-1を返すため、aはNULLのままではありません。
D
ゼロ除算エラーになり、結果行を返さない
分母はNULLIFによってNULLになります。数値0を分母にする除算ではないため、この式ではゼロ除算になりません。
解説
NULLIF(0,0)は引数が等しいためNULLを返します。NULLを使う除算の結果はNULLで、COALESCEは次の非NULL値-1を選びます。bでは0が最初の非NULL値であり、0を飛ばして99を選ぶことはありません。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 2
Oracle AI Database 26aiのvisits(channel VARCHAR2(10))には、'WEB'、'WEB'、'APP'、'APP'、NULLの5行だけがある。次のn1、n2、n3の組はどれか。
SELECT COUNT(*) AS n1, COUNT(channel) AS n2,
COUNT(DISTINCT channel) AS n3
FROM visits;
問題 3
Oracle AI Database 26aiで、employees(emp_id,dept_id)には(1,10)、(2,20)、(3,NULL)、blocked(dept_id)には10、NULLだけがある。次のSQLが返すemp_idの集合はどれか。各列はNUMBERで、表示順は問わない。
SELECT e.emp_id FROM employees e
WHERE NOT EXISTS (
SELECT 1 FROM blocked b WHERE b.dept_id = e.dept_id
);
問題 4
Oracle AI Database 26aiで、departments(dept_id PRIMARY KEY)は10、20、30、employees(emp_id PRIMARY KEY,dept_id)は(1,10)、(2,10)、(3,20)だけである。次のSQLが返す1行の(dept_id,joined_rows,employees_n)はどれか。
SELECT d.dept_id, COUNT(*) AS joined_rows,
COUNT(e.emp_id) AS employees_n
FROM departments d LEFT JOIN employees e
ON d.dept_id = e.dept_id
GROUP BY d.dept_id
HAVING COUNT(e.emp_id) = 0;