ORACLE MASTER Silver SQL 26aiグループ集計と複数表の結合オリジナル・公式資料照合難易度★★★☆☆
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;
A
全2行、非NULLは2行
内部結合なら上司なしの社員1を除きますが、本問はLEFT JOINなので残ります。
B
全3行、非NULLは3行
社員1のmanager_idはNULLで、等値条件で上司1自身へ結合するわけではありません。
C
全9行、非NULLは9行
同じ表の参照でも直積をそのまま返しません。指定した上司IDの等値条件で結合します。
D
全3行、manager_id_resultが非NULLは2行★ 正解
社員1のNULL補完行1件と、社員2・3の上司一致行2件を合計します。
解説
同じ表を社員eと上司mの二つの役割で参照します。社員2と3は上司1へ結合し、社員1は上司不在でもLEFT JOINで残ります。全体3行、そのうち上司側IDが非NULLなのは2行です。
根拠資料・確認情報
対応範囲: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;
問題 2
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';
問題 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;