各部門で「最も安い」従業員を獲得したい場合は、私の頭から2つの選択肢があります。
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
または、次を使用できます:
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
2番目のステートメントは、同じ部門で給与の低い別の従業員を見つけることができないすべての従業員を見せてくださいと効果的に言うことで機能します。
どちらの場合も、2人以上の従業員の最低給与が等しい場合は、両方(すべて)になります。