SELECT *
FROM EMPLOYEE a
LEFT JOIN EMPLOYEE b
ON a.Employee_ID <> b.Employee_ID
WHERE a.employee_salary < b.employee_salary and a.Department_ID='30'
こんにちは私は部門30の従業員よりも多くのお金を稼いでいる従業員のすべての情報を取得したいです
SELECT * FROM EMPLOYEE
where (Department_ID<>'30')
and
(
employee_salary >
(select max(employee_salary) from EMPLOYEE where Department_ID='30')
)
または、すべての部門30を超える収入が必要な場合は、MAXの代わりにSUMを使用します。
SELECT * fROM EMPLOYEE a where a.Department_ID!='30'
and (a.employee_salary > (select max(b.employee_salary)
from EMPLOYEE b where b.Department_ID='30'))
問題を分割すると、次のようになります。
簡単な方法は、サブクエリを使用したクエリです。メインクエリは、より多くを稼ぐよりも従業員を取得X
し、サブクエリはを返しますX
。
サブクエリ 30人の従業員の収入はいくつですか?
Select employee_salary from employee where Department_ID='30'
サブクエリを使用したメインクエリ:このお金よりもモーラを稼ぐ従業員:
Select * from employee
where employee_salary > ANY (
Select employee_salary from employee where Department_ID='30'
)
ANY
またはALL
サブクエリ演算子で使用できることに注意してください。
ALL
ALL
30人以上の従業員を稼ぐよりも多くの従業員を探していることを意味します。ANY
ANY
30人以上の従業員を稼ぐよりも多くの従業員を探していることを意味します。