首页 > 解决方案 > SQL:如果满足条件,有没有办法排除重复结果

问题描述

我正在尝试构建一个查询,该查询将搜索某个用户以及与他们关联的最新工作。我只想提取最近的日期,但有些用户有两个与同一日期相关的工作。如果这是用户唯一的工作,有没有办法只提取其中一个而不排除该结果?

例如

User    Job    Date

1      Chef    7/13/21    
1      Server  7/13/21
2      Server  7/3/21
3      Chef    7/1/21

期望的结果:

User    Job    Date    

1      Chef    7/13/21    
2      Server  7/3/21
3      Chef    7/1/21

谢谢!

标签: oracleplsql

解决方案


利用keep dense_rank

https://oracle-base.com/articles/misc/rank-dense-rank-first-last-analytic-functions

select user, date, 
       MIN(job) KEEP (DENSE_RANK FIRST ORDER BY date)
from   table
group by user, date

一个粗略的例子 http://sqlfiddle.com/#!4/14ee4d/2 现在这不是确定性的,因为当在同一日期有两个作业时,您需要指定如何对它们进行排序。如果您的日期列包含时间,那么您应该没问题


推荐阅读