Se volessi ottenere l'impiegato "più economico" in ogni reparto, avresti due scelte in cima alla mia testa:
SELECT
E.* -- Don't actually use *, list out all of your columns
FROM
Employees E
INNER JOIN
(
SELECT
department,
MIN(salary) AS min_salary
FROM
Employees
GROUP BY
department
) AS SQ ON
SQ.department = E.department AND
SQ.min_salary = E.salary
Oppure puoi usare:
SELECT
E.*
FROM
Employees E1
LEFT OUTER JOIN Employees E2 ON
E2.department = E1.department AND
E2.salary < E1.salary
WHERE
E2.employee_id IS NULL -- You can use any NOT NULL column here
La seconda affermazione funziona dicendo in modo efficace, mostrami tutti i dipendenti in cui non puoi trovare un altro dipendente nello stesso dipartimento con uno stipendio inferiore.
In entrambi i casi, se due o più dipendenti hanno la stessa retribuzione minima, li otterrai entrambi (tutti).