Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dodatkowe pola z SQL MIN() i GROUP BY

Gdybyś chciał pozyskać „najtańszego” pracownika w każdym dziale, miałbyś dwa wyjścia z mojej głowy:

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

Możesz też użyć:

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

Drugie stwierdzenie działa skutecznie mówiąc, pokaż mi wszystkich pracowników, w których nie możesz znaleźć innego pracownika z tego samego działu z niższą pensją.

W obu przypadkach, jeśli dwóch lub więcej pracowników ma równe pensje, które są minimalne, otrzymasz ich obu (wszystkich).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Z klauzulą

  2. Konfigurowanie nowej instancji MySQL Co to jest bieżące hasło roota?

  3. Lon/Lat Order przy użyciu przestrzennego typu POINT w MySQL

  4. Dynamiczne tabele bazy danych w django

  5. Jak zainstalować Ruby on Rails z mysql i uruchomić go, przewodnik krok po kroku?