2
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の従業員よりも多くのお金を稼いでいる従業員のすべての情報を取得したいです

データベースの画像

4

3 に答える 3

2
SELECT  * FROM    EMPLOYEE 
where (Department_ID<>'30')
and 
 (
 employee_salary > 
  (select max(employee_salary) from EMPLOYEE  where  Department_ID='30')
 )

または、すべての部門30を超える収入が必要な場合は、MAXの代わりにSUMを使用します。

于 2012-12-19T10:36:04.943 に答える
0
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'))
于 2012-12-19T10:37:32.667 に答える
0

問題を分割すると、次のようになります。

  • 最初に:あなたは何人のお金が30人の従業員を離れて稼ぐかを知る必要があります。
  • 2番目:このお金よりもモーラを稼ぐ従業員を連れて行きます。

簡単な方法は、サブクエリを使用したクエリです。メインクエリは、より多くを稼ぐよりも従業員を取得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サブクエリ演算子で使用できることに注意してください。

  • ALLALL30人以上の従業員を稼ぐよりも多くの従業員を探していることを意味します。
  • ANYANY30人以上の従業員を稼ぐよりも多くの従業員を探していることを意味します。
于 2012-12-19T10:34:24.807 に答える