我想从我的数据库中获取员工的姓氏,比他收入高的员 worker 数,然后将员工的薪水降序排列;收入最高的员工为零。这是我的做法:
SELECT 0+COUNT(b.salary) rank
, a.lname
, a.salary
, COUNT(*) AS employee_count
FROM employee a LEFT OUTER JOIN employee b
ON a.salary<b.salary
GROUP BY a.salary, a.lname
ORDER BY salary DESC
结果如下所示:
到目前为止一切顺利。除了,博格甚至不应该在那里。因为没有人比他挣得更多。现在发生这种情况是因为使用了 LEFT OUTER JOIN。我尝试使用 INNER JOIN 但它给出了语法错误。所以问题是我怎样才能让 INNER JOIN 与它一起工作?
最佳答案
如果只想去掉最高值:
SELECT *
FROM (
SELECT 0+COUNT(b.salary) rank
, a.lname
, a.salary
, COUNT(*) AS employee_count
FROM employee a
LEFT OUTER JOIN employee b
ON a.salary < b.salary
GROUP BY a.salary, a.lname
ORDER BY salary DESC
) T1
WHERE T1.rank > 0
关于mysql - COUNT 与 RANK mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20230646/