Mysql
 sql >> база данни >  >> RDS >> Mysql

Допълнителни полета с SQL MIN() &GROUP BY

Ако искате да получите „най-евтиния“ служител във всеки отдел, щяхте да имате два избора от главата ми:

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

Второто твърдение работи, като ефективно казва, покажи ми всички служители, където не можете да намерите друг служител в същия отдел с по-ниска заплата.

И в двата случая, ако двама или повече служители имат равни заплати, които са минималните, ще получите и двамата (всички).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP превръща запетаята в <br />

  2. MySQL Създаване на таблица като SELECT

  3. MySQL DB избира записи със и без умлаути. напр.:'.. където нещо =FÖÖ'

  4. Възможно ли е да се конкатенират низове от множество редове и таблици в една колона с резултати?

  5. XML изход от MySQL