Mikrozadanie 3

backback

Treść

Znajdź maksymalną pensję na wszystkich stanowiskach na których pracuje co najmniej 3 pracowników zarabiających co najmniej 1000.

Wzorcówka

SELECT e.job, MAX(e.sal)
  FROM emp e
  WHERE e.sal >= 1000
GROUP BY e.job
HAVING COUNT(e.empno) >= 3;

Uwagi

  1. Kilka osób niepotrzebnie skomplikowało sobie zapytanie podzapytaniem, pisząc coś takiego:
SELECT e.job, MAX(e.sal)
  FROM (
    SELECT e.empno, e.job, e.sal 
      FROM emp e
      WHERE e.sal >= 1000) e
GROUP BY e.job
HAVING COUNT(e.empno) >= 3;

Oczywiście te zapytania są równoważne, baza danych wykonuje oba identycznie, ale to drugie czyta się trudniej bez większego powodu.

backback