我有兩個表,如下所示:找到誰得到的最高薪水中的每個位置
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]標籤。這種類型的問題經常出現,所以你可以閱讀一些其他答案。 –