2014-10-29 40 views
0

可以說這是我的員工表:employee(id,name,job,sal)。工作可能是「會計」,「經理」,「店員」等。我試圖使用子查詢來獲取每個作業類型最高的薪水,這樣輸出的東西:SQL每種類型的最高值

JOB   NAME  SALARY 
clerk  Bob  120 
accountant Mike  320 
manager  Sam  660 

SQL我試着:

SELECT 
    job, 
    ename, 
    sal 
FROM 
    emp 
WHERE 
sal = (SELECT MAX(sal) FROM emp where job IN (SELECT DISTINCT(job) FROM emp)); 

我一直在試圖與DISTINCT和MAX功能,但我堅持,並能得到附近任何地方,任何幫助嗎?

+2

你嘗試過什麼SQL? – Ellesedil 2014-10-29 16:05:32

+0

SELECT job,ename,sal FROM emp WHERE sal =(SELECT MAX(sal)FROM emp where job IN(SELECT DISTINCT(job)FROM emp)); – user3648686 2014-10-29 16:06:23

+1

這應該在你的問題。另外,請嘗試保持結果格式。您的原始結果很難閱讀。 – Ellesedil 2014-10-29 16:06:58

回答

4

如果你只需要每個工作的最高工資,那麼這應該工作。

SELECT Max(SALARY) AS maxsalary, 
     JOB 
FROM employee 
GROUP BY JOB 

如果您需要誰獲得每個工作的最高工資,那麼試試這個。

SELECT t1.JOB, 
     t1.NAME, 
     t1.SALARY 
FROM employee t1 
     INNER JOIN (SELECT Max(SALARY) AS maxsalary, 
          JOB 
        FROM employee 
        GROUP BY JOB) t2 
       ON t1.JOB = t2.JOB 
        AND t1.SALARY = t2.maxsalary 
+0

SQL小提琴:http://sqlfiddle.com/#!4/3c071/1/0 – BnJ 2014-10-29 16:15:07

+0

@BnJ - 謝謝你加小提琴 – 2014-10-29 16:18:34

0

好想通了,看起來簡單一些,上面的答案:

SELECT job, name, salary 
FROM employee 
WHERE (salary, job) IN (SELECT MAX(salary), job FROM employee GROUP BY job); 

感謝您的幫助,雖然