Als je de "goedkoopste" werknemer op elke afdeling zou willen krijgen, zou je twee keuzes uit mijn hoofd hebben:
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
Of u kunt gebruiken:
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
De tweede verklaring werkt door te zeggen:laat me alle medewerkers zien waar je geen andere medewerker op dezelfde afdeling kunt vinden met een lager salaris.
In beide gevallen, als twee of meer werknemers gelijke salarissen hebben die het minimum zijn, krijgt u ze allebei (allemaal).