mysql - 如何将列除以行数,然后按 1 到 5 的比例对其进行排名,5 是 mysql 中最大的
问题描述
我目前正在开展一个自动化报告的项目,其中我必须在 mysql 中编写一个查询才能自动完成它。一直试图在网上无休止地寻找这个但无济于事:(这是一个虚拟数据
{Empname | Salary}
Ellen | 45030
Claudia | 40000
collin | 25000
Meghan | 24350
Angelika | 24000
John | 20000
Smith | 20000
Adam | 16555
Andrew | 16000
Mayer | 13000
我需要先将薪水行数除以 5,然后将其按输出分组,因此如果行数为 10,例如,它将是 10/5=2,因此该列需要分组为 2,然后将前 2 排为 5,接下来的 2 排为 4,依此类推,请注意行数每次都会改变 所需的输出如下
{Empname | Salary | Salary Rank}
Ellen | 45030 | 5
Claudia | 40000 | 5
collin | 25000 | 4
Meghan | 24350 | 4
Angelika | 24000 | 3
John | 20000 | 3
Smith | 20000 | 2
Adam | 16555 | 2
Andrew | 16000 | 1
Mayer | 13000 | 1
我一直在尝试我发现的以下代码,但是它没有根据薪水列中的值分配排名,排名也不是从 5 到 1
select ceil(rnk/5.0) as grp,
`salary`, `emp name`
FROM
(
select e.`salary`, e.`emp name`,
(SELECT count(*) from `empdata` d
where e.`salary`< d.`salary`) + 1 as rnk
from `empdata` e
)x
order by `salary` desc
解决方案
推荐阅读
- go - Why is the heap in Go executable?
- javascript - AudioContext.decodeAudioData(...) 不能在 iPhone 上工作,但在其他地方工作
- python-3.x - 如何将变量放入json对象?
- javascript - 如何在 JavaScript 中按字母顺序(升序和降序)排序
- php - 试图获取非对象的属性,但它是一个对象
- c# - 在调用类中获取 EventArgs
- node.js - 安装 ESLint 和 Babel 等插件
- spring-boot - tomcat 抛出一个 IllegalArgumentException
- r - 在 R 中安装包“plotly”时出错
- c# - 具有 Azure AD 身份验证的 UWP 应用程序 - 如何判断用户的登录状态