Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các trường bổ sung với SQL MIN () &GROUP BY

Nếu bạn muốn có được nhân viên "rẻ nhất" trong mỗi bộ phận, bạn sẽ có hai lựa chọn nằm ngoài đầu của tôi:

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

Hoặc bạn có thể sử dụng:

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

Câu lệnh thứ hai hoạt động hiệu quả bằng cách nói rằng, hãy chỉ cho tôi tất cả nhân viên nơi bạn không thể tìm thấy một nhân viên nào khác trong cùng bộ phận với mức lương thấp hơn.

Trong cả hai trường hợp, nếu hai hoặc nhiều nhân viên có mức lương bằng nhau và mức lương tối thiểu thì bạn sẽ nhận được cả hai (tất cả).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng SQL với mục nhập danh sách so với bảng SQL với một hàng cho mỗi mục nhập

  2. Có tác hại gì khi đặt lại mức tăng tự động không?

  3. Tại sao password_verify trả về false?

  4. Cách kiểm tra phiên bản MySQL của bạn

  5. Cách tốt nhất để phát triển / quản lý / thiết kế các nhiệm vụ / lịch định kỳ