Mikrozadanie 2

backback

Treść

Dla każdego pracownika wypisz imię jego szefa jeżeli (ten szef) zarabia więcej niż 3000 (lub NULL jeżeli nie ma takiego szefa).

Wzorcówka

SELECT e1.empno, e2.ename
  FROM emp e1
  LEFT JOIN emp e2
    ON e1.mgr = e2.empno
    AND e2.sal > 3000;

Uwagi

  1. Kilku studentów napisało WHERE e2.sal > 3000 zamiast AND e2.sal > 3000. Nie o to prosi polecenie, w szczególności polecenie wyraźnie prosi o po jednym wierszu dla każdego pracownika.
  2. Opcjonalną, równoważną wersją tego zapytania jest taka wykorzystująca CASE WHEN:
SELECT 
  e1.empno, 
  (CASE WHEN e2.sal > 3000 THEN e2.ename
        ELSE NULL
  END) AS mgr_ename
  FROM emp e1
  LEFT JOIN emp e2
    ON e1.mgr = e2.empno;

backback