作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从列表中找出每个部门的第 n 大薪水。我能够使用聚合来完成基本的最小值和最大值,例如
Select DEPARTMENT, MAX(SALARY) FROM dept_salary
GROUP BY 1
使用 MySQL 我能够根据个人而不是组合获得第 n 个薪水:
SELECT DISTINCT DEPARTMENT, SALARY FROM dept_salary
ORDER BY 2 DESC
LIMIT n,1
DEPARTMENT SALARY
-------------------------
Customer Service 143937
Human Resources 141953
Customer Service 138637
Customer Service 137535
Customer Service 136548
Customer Service 135650
Marketing 135497
Customer Service 134893
Customer Service 133837
Customer Service 133569
如有任何关于如何让它工作的指示,我们将不胜感激。
最佳答案
对于一般的解决方案,变量是最简单的方法:
select ds.*
from (select ds.*,
(@rn := if(@d = department, @rn + 1,
if(@d := department, 1, 1)
)
) as rn
from (select distinct department, salary
from dept_salary
) ds cross join
(select @rn := 0, @d := '') params
order by department, salary desc
) ds
where rn = 3; -- for instance
关于mysql - 如何找到不同部门的第n个最高薪水?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003868/
假设我有一个 employee 表,其中有一列 salary。我想在年底时给薪水 > 4000 美元的人加薪 10%,给薪水 4000 THEN 1.1 ELSE 1.05 END 或特定函数如:I
我是一名优秀的程序员,十分优秀!