在表部门中明智地找到第二大

时间:2011-02-04 04:39:50

标签: mysql

我有一个表名' 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 个答案:

答案 0 :(得分:3)

由于您使用的是MySql,因此可以利用limit子句中的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

答案 1 :(得分:0)

从EMP WHERE SAL IN中选择SAL(从EMP中选择MAX(SAL)SAL&lt;&gt;(从EMP中选择MAX(SAL))

答案 2 :(得分:0)

通过使用bellow查询,我们将使用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 )