Sql 如何将每个“用户”的结果数限制为5,但如果第5行的立即数与连续行的立即数相同,则允许更多行?
我有一个数据库,里面有一个组织的域名、工资和工资日期。 我的问题是,我必须为每个域找到5个最高工资,但是如果第6行、第7行或更多行的值与第5行的值相同,那么第5行的数量可能会增加到更多。我试着使用窗口函数 从中选择* 选择id\u域、薪资值、薪资日期、, 密级 按id_域划分 按薪资日期描述、薪资值描述排序 作为员工的评价等级 评论排名的员工使用排名。如果你想要5+那么:Sql 如何将每个“用户”的结果数限制为5,但如果第5行的立即数与连续行的立即数相同,则允许更多行?,sql,postgresql,window-functions,Sql,Postgresql,Window Functions,我有一个数据库,里面有一个组织的域名、工资和工资日期。 我的问题是,我必须为每个域找到5个最高工资,但是如果第6行、第7行或更多行的值与第5行的值相同,那么第5行的数量可能会增加到更多。我试着使用窗口函数 从中选择* 选择id\u域、薪资值、薪资日期、, 密级 按id_域划分 按薪资日期描述、薪资值描述排序 作为员工的评价等级 评论排名的员工使用排名。如果你想要5+那么: select * from (select id_domain,salary_value, sal
select *
from (select id_domain,salary_value,
salary_value - lag(salary_value) over (partition by id_domain order by salary_value desc) AS diff,
rank() over (partition by id_user order by salary_value desc) as rowrank
from employee)as t
) t
where rowrank < 6;
或:
非常感谢你,戈登。。我低估了排名:D
select *
from (select id_domain,salary_value,
salary_value - lag(salary_value) over (partition by id_domain order by salary_value desc) AS diff,
rank() over (partition by id_user order by salary_value desc) as rowrank
from employee)as t
) t
where rowrank < 6;
where rowrank <= 5