Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bidang Ekstra dengan SQL MIN() &GROUP BY

Jika Anda ingin mendapatkan karyawan "termurah" di setiap departemen, Anda memiliki dua pilihan di atas kepala saya:

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

Atau Anda dapat menggunakan:

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

Pernyataan kedua berfungsi dengan efektif mengatakan, tunjukkan kepada saya semua karyawan di mana Anda tidak dapat menemukan karyawan lain di departemen yang sama dengan gaji lebih rendah.

Dalam kedua kasus tersebut, jika dua atau lebih karyawan memiliki gaji minimum yang sama, Anda akan mendapatkan keduanya (semua).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi Pendaftaran Facebook

  2. ANTARA kueri menggunakan JDBC dengan MySQL

  3. LOAD DATA tidak diperbolehkan dalam prosedur tersimpan

  4. MySQL Workbench memutuskan koneksi saat idle

  5. Mendapatkan hitungan harian untuk acara yang tidak terjadi setiap hari