2012-12-19 68 views
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检索信息的SQL查询

image of database

+1

问题是什么? –

+1

你有什么试过?与[此问题](http://stackoverflow.com/q/13949635/1169798)一起,您似乎希望我们编写所有代码。 – Sirko

+0

我写了上面的代码,但是我遇到了一些问题......我不需要别人编写的所有代码,我只是需要一些提示,以便充分理解sql对我的大学的作用。当我在我面前有一段代码时,我可以编辑它并更好地理解它。 – user1915345

回答

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

或者使用MAX的SUM istead如果你需要员工的是赚取更多的所有部门30

0

分割问题将帮助我们:

  • 第一个:您需要知道有多少钱可以赚取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' 
) 

通知比你可以在子查询操作使用ANYALL

  • ALL手段你正在寻找员工的收入超过ALL dpt 30名员工。
  • ANY意味着您正在寻找的员工数量超过了dpt 30名员工的ANY
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'))