我有两个表,如下所示:找到谁得到的最高薪水中的每个位置
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
从这两个表,我需要知道如何检索谁在每个地点获得最高工资;在一个地方,一个人应该属于这个类别。
如何检索谁在每个位置获得最高工资?
我有两个表,如下所示:找到谁得到的最高薪水中的每个位置
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
从这两个表,我需要知道如何检索谁在每个地点获得最高工资;在一个地方,一个人应该属于这个类别。
如何检索谁在每个位置获得最高工资?
这里是解决这个的一种方法:
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会好得多。
这应该工作:
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
)
它可能不是做虽然这是最有效的还是蛮方式。
请注意,如果同一地点的多个人共享该地点的最高工资,则此查询将返回所有人。
我知道了,谢谢你.... – Raj
你有没有试过自己解决这个问题? –
我添加了[tag:最大n-per-group]标签。这种类型的问题经常出现,所以你可以阅读一些其他答案。 –