Wenn Sie in jeder Abteilung den "billigsten" Mitarbeiter bekommen wollten, hätten Sie zwei Möglichkeiten:
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
Oder Sie können verwenden:
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
Die zweite Aussage funktioniert so, dass sie effektiv sagt, zeigen Sie mir alle Mitarbeiter, wo Sie keinen anderen Mitarbeiter in derselben Abteilung mit einem niedrigeren Gehalt finden können.
In beiden Fällen erhalten Sie beide (alle), wenn zwei oder mehr Mitarbeiter gleiche Gehälter haben, die das Minimum sind.