結果は?(sales: ann 350, bob 500 / dev: cat 400, dan 100)
SELECT name FROM emp eWHERE salary > (SELECT AVG(salary) FROM emp WHERE dept = e.dept)ORDER BY name;正答
- bob, cat
- ann, bob, cat
- bob
- ann, dan
解説
サブクエリの中で外側の e.dept を参照しているため、外側の 1 行ごとにその人の部署の平均給与を計算し直す(相関サブクエリ)。sales の平均は 425 で bob だけが上回り、dev の平均は 250 で cat だけが上回る。選択肢 2 の ann, bob, cat は dept = e.dept を無視して全社平均 337.5 と比べた読み方で、相関条件の有無で結果が変わる。選択肢 4 は不等号の向きを逆にした結果。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ