2013-11-03 44 views
0

我有两个表,如下所示:找到谁得到的最高薪水中的每个位置

employ_offical:

 
id name salary 
1 raj 5000 
2 ram 8000 
3 balu 3000 
4 david 4000 

员工个人:

name location 
raj  india 
ram  china 
balu  india 
david china 

从这两个表,我需要知道如何检索谁在每个地点获得最高工资;在一个地方,一个人应该属于这个类别。

如何检索谁在每个位置获得最高工资?

+1

你有没有试过自己解决这个问题? –

+0

我添加了[tag:最大n-per-group]标签。这种类型的问题经常出现,所以你可以阅读一些其他答案。 –

回答

1

这里是解决这个的一种方法:

select p.location, p.name, o.salary 
    from employ_offical o, 
     employee_personal p 
where o.name = p.name 
    and o.salary = (
     select max(o2.salary) 
     from employ_offical o2, 
       employee_personal p2 
     where o2.name = p2.name 
      and p2.location = p.location); 

有一个SQL小提琴here

请注意我在这里加入了名称,因为它是唯一可用的连接,但从设计角度来看,在两个表中都有id并且加入id会好得多。

0

这应该工作:

SELECT eo.name, ep.location, eo.salary 
FROM employ_offical eo 
INNER JOIN employee_personal ep ON eo.name = ep.name 
WHERE eo.salary = (SELECT MAX(salary) 
        FROM employ_offical eo1 
        INNER JOIN employee_personal ep1 ON eo1.name=ep1.name 
        WHERE ep.location = ep1.location       
        ) 

它可能不是做虽然这是最有效的还是蛮方式。

请注意,如果同一地点的多个人共享该地点的最高工资,则此查询将返回所有人。

+0

我知道了,谢谢你.... – Raj