2011-02-04 68 views
2

我有一個表名'emp'。列是: uid,emp_name,emp_dept,emp_sal。發現表部門明智的第二大

現在我想找到每個部門員工的第二大薪水。 請給我建議查詢。 我已經使用這個查詢,但它並沒有顯示我想要的結果::

select max(emp_sal) from emp where emp_sal<(select max(emp_sal) from emp) 
group by emp_dept 

回答

3

既然你使用MySQL,你可以利用offset參數的限制子句。

SELECT e.emp_dept, 
    (SELECT p.emp_sal 
     FROM emp p 
     WHERE p.emp_dept = e.emp_dept 
     ORDER BY p.emp_sal DESC 
     LIMIT 1,1) secondHighestSal 
FROM emp e 
GROUP BY e.emp_dept 
+0

感謝讓與了所有部門的第二個最高值,它的工作。偉大的查詢 – 2011-02-04 05:21:24

0

SELECT SAL FROM EMP WHERE SAL IN(SELECT MAX(SAL)FROM EMP WHERE SAL <>(SELECT MAX(SAL) FROM EMP))

0

通過使用波紋管的查詢,我們將使用LIMIT

SELECT a . * FROM emp AS a 
WHERE 2 = (SELECT count(a.uid) 
FROM emp AS b 
WHERE a.emp_sal <= b.emp_sal AND a.emp_dept = b.emp_dept 
GROUP BY a.emp_dept)