【问题标题】:Find who gets the maximum salary in each location [closed]找出每个地点的最高薪水[关闭]
【发布时间】:2013-11-14 09:00:05
【问题描述】:

我有两个表如下:

employ_offical:

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

员工个人:

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

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

如何检索每个地点的最高工资?

【问题讨论】:

  • 您尝试过自己解决这个问题吗?
  • 我添加了greatest-n-per-group 标签。此类问题经常出现,因此您可以阅读许多其他答案中的一些。

标签: sql oracle oracle10g greatest-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 Fiddle here

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

【讨论】:

    【解决方案2】:

    这应该可行:

    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                        
                       )
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2018-08-24
      • 1970-01-01
      • 2021-03-04
      • 2016-07-24
      • 2013-05-14
      • 2022-01-07
      相关资源
      最近更新 更多