Si vous vouliez obtenir l'employé "le moins cher" dans chaque département, vous auriez deux choix en tête :
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
Ou vous pouvez utiliser :
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 deuxième déclaration fonctionne en disant, montrez-moi tous les employés où vous ne pouvez pas trouver un autre employé dans le même département avec un salaire inférieur.
Dans les deux cas, si deux employés ou plus ont des salaires égaux qui sont le minimum, vous les recevrez tous les deux (tous).