mysql - 根据每位员工的功绩点从最高到最低对每个员工进行排名

标签 mysql sql

创建两个表emp_merits(meritid,empid,date,meritpoints),emp1(empid,empname)每个员工每月都会根据他们的表现获得功绩点。因此,同一员工可以在表中拥有多个具有不同优点的条目。 列出特定员工在特定日期之间获得的所有优点(此处将输入 empid) 根据每位员工的功绩点从最高到最低进行排名

到目前为止我已经尝试过这个查询

select   empid , sum (meritpoints) as totalmerits , (DENSE_RANK()OVER (PARTITION BY empid ORDER BY meritpoints desc)) AS rank from emp_merit 
  group by empid,meritpoints 
  order by empid ,totalmerits desc

最佳答案

你可以试试这个:

SELECT @rownum := @rownum + 1 AS rank, a.*  
FROM (
SELECT empid, sum(meritpoints) AS totalmerits
FROM emp_merits 
GROUP BY empid
ORDER BY totalmerits) a, (SELECT @rownum := 0) r ;

您可能需要在 WHERE 子句中指定具体日期。

关于mysql - 根据每位员工的功绩点从最高到最低对每个员工进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48903521/

相关文章:

mysql - 在子查询中定义和使用变量?

php - 如何从sql php中的同一个表中选择多个avg

java - EclipseLink MySQLSyntaxErrorException 找不到错误

php - 加入一个 View 与另一个 View 性能

mysql 选择一次(DISTINCT 不工作)

sql - 别名链接服务器?

php - 在一张表中插入数据,从另一张表中删除数据,在mysql中使用时间戳条件

mysql - 为什么在满足条件的情况下不使用覆盖索引?

sql - 将我们所有的 SQL、NoSQL 数据复制到 Snowflake 后,有没有办法在数百个表、Json 和其他数据中检测 "relationships"?

sql - 跨多个表的聚合 SQL 查询