sql >> Database teknologi >  >> RDS >> Mysql

Ekstra felter med SQL MIN() &GROUP BY

Hvis du ville have den "billigste" medarbejder i hver afdeling, ville du have to valgmuligheder fra toppen af ​​mit hoved:

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

Eller du kan bruge:

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

Den anden erklæring fungerer ved effektivt at sige, vis mig alle medarbejdere, hvor du ikke kan finde en anden medarbejder i samme afdeling med en lavere løn.

I begge tilfælde, hvis to eller flere ansatte har lige løn, som er minimum, vil du få dem begge (alle).



  1. Sådan installeres MySQL med phpMyAdmin på Debian 7

  2. Hvordan ændres database_url på heroku?

  3. Oracle Forskelle mellem NVL og Coalesce

  4. SQL Ikke lig med () Operator for begyndere