0

我有两个表如下:

雇佣官方:

身份证姓名工资
1 拉吉 5000
2 内存 8000
3 巴鲁 3000
4大卫4000

员工个人:

名称位置
拉吉印度
中国公羊
印度巴鲁
大卫中国

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

如何检索每个位置谁获得最高薪水?

4

2 回答 2

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 Fiddle 。

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

于 2013-11-03T18:06:23.733 回答
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                        
                   )

不过,这可能不是最有效或最漂亮的方法。

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

于 2013-11-03T18:10:52.760 回答