ORACLE MASTER Silver SQL 26aiグループ集計と複数表の結合オリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiでdepartments(dept_id PRIMARY KEY)は10、20、employees(emp_id PRIMARY KEY, dept_id, status)は(1,10,'ACTIVE')、(2,20,'INACTIVE')だけである。次の結果の(dept_id, emp_id)はどれか。表示順は問わない。 SELECT d.dept_id, e.emp_id FROM departments d LEFT JOIN employees e ON e.dept_id = d.dept_id AND e.status = 'ACTIVE';
A
(10,1)だけ
右表のstatus条件をWHEREへ置いてNULL補完行も除く場合と混同しています。本問の条件はONです。
B
(10,1)と(20,NULL)★ 正解
LEFT JOINの保存側である両部署が残り、部署20の右表部分だけがNULLになります。
C
(10,1)と(20,2)
社員2はINACTIVEであり、ONの条件に一致しません。部署行が残ることと社員2が結合されることは別です。
D
(10,NULL)と(20,NULL)
社員1は部署10のACTIVEなので一致します。全ての右表列を一律NULLへ変える結合ではありません。
解説
右表のACTIVE条件はONにあり、結合相手の選択に使います。部署20には条件に合う社員がいないため、保存側の部署行を残してemp_idをNULLにします。WHERE e.status=...とする場合とは結果が異なります。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 1
Oracle AI Database 26aiのpayroll(dept_id, salary NUMBER)の全行は(10,100)、(10,NULL)、(10,300)、(20,50)である。次のSQLで返る行はどれか。
SELECT dept_id, COUNT(*) AS rows_n, COUNT(salary) AS paid_n, AVG(salary) AS avg_pay
FROM payroll
GROUP BY dept_id
HAVING COUNT(salary) >= 2;
問題 3
Oracle AI Database 26aiでemployees(emp_id, salary)は(1,2000)、(2,3000)、bands(label, low_pay, high_pay)は('LOW',1000,3000)、('HIGH',3000,5000)だけである。次の結合結果はどれか。金額はすべてNUMBERでNULLはない。
SELECT e.emp_id, b.label
FROM employees e JOIN bands b
ON e.salary >= b.low_pay AND e.salary < b.high_pay;
問題 4
Oracle AI Database 26aiのemployees(emp_id PRIMARY KEY, manager_id)の全行は(1,NULL)、(2,1)、(3,1)である。次の問合せで、全結果行数とmanager_id_resultが非NULLの行数の組はどれか。
SELECT e.emp_id, m.emp_id AS manager_id_result
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.emp_id;