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