oracle - 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
谢谢!
解决方案
利用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 现在这不是确定性的,因为当在同一日期有两个作业时,您需要指定如何对它们进行排序。如果您的日期列包含时间,那么您应该没问题
推荐阅读
- python - 如何在 Pandas Python 中将单元格中的数字更改为单词“Bus”
- react-native - 附加新数据后的 FlatList 奇怪行为 - 多次自动滚动
- scala - Scala中令人惊讶的数字扩展
- ruby-on-rails - 模型文件中的 Rails faker?
- c# - 将 webpack 与 Web 表单结合使用
- java - 使用 SOAP 连接到服务器时出错
- swift - 将 iOS 应用程序与 AWS EC2 服务器连接时出现问题
- bash - 为什么 rm -rf $DIR 从 bash 脚本运行时不删除目录
- c++ - 如何通过函数的 void 指针参数传递 int 值并将其转换回 int 值?
- javascript - 事件和事件处理是 JavaScript 语言本身的固有部分吗?