SELECT DISTINCT salary
FROM worker a
WHERE 3 >= (SELECT COUNT (DISTINCT salary)
FROM worker b
WHERE a.salary >= b.salary)
ORDER BY salary DESC
任何人都可以解释此查询吗?
答案 0 :(得分:3)
这是您的查询,格式正确:
SELECT DISTINCT salary
FROM Worker a
WHERE 3 >= (SELECT COUNT (DISTINCT salary) FROM Worker b WHERE a.salary >= b.salary)
ORDER BY
salary DESC;
对于表中的每个工人,子查询将查找其工资比外部查询中的工人工资高 的工人数/人数。查询将仅返回三个或三个以下其他工人的薪水更高的作品。
还有另一种使用分析函数编写查询的方式:
SELECT DISTINCT salary
FROM
(
SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) dr
FROM Worker
) t
WHERE dr <= 3;
编辑:
在Oracle中编写查询的最简单方法是:
select salary
from (select distinct salary
from worker
order by salary
) s
where rownum <= 3
答案 1 :(得分:2)
如果您想显示最后3个低薪水,也可以将其写为
myMap.set({ key: loss.affectedOn }, loss);