【发布时间】:2017-03-19 00:49:30
【问题描述】:
我有下表:
LOCATION_ID, PERSON_ID, DATE
3, 65, 2016-06-03
7, 23, 2016-10-28
3, 23, 2016-08-05
5, 65, 2016-07-14
我想在 PL/SQL 中构建一个选择查询,以选择每个 person_id 具有最近 location_id 的记录。对于上面的示例,期望的结果应该是:
LOCATION_ID, PERSON_ID, DATE
5, 65, 2016-07-14
7, 23, 2016-10-28
(日期表示为'YYYY-MM-DD')
谢谢!
【问题讨论】:
-
您检查收到的所有答案了吗?您将效率最低的一项标记为“正确”。 Wernfried 的second 解决方案显然是最好的解决方案。它只遍历整个表 - 没有连接,因此它比任何基于连接的解决方案都要快得多。第二好的解决方案(两次通过,但仍然没有连接,所以仍然快得多)是 Hawk 的解决方案和 Wernfried 的 first 解决方案。如果你不明白他们的解决方案,你可以问。
-
我将我阅读并为我工作的第一个答案标记为“正确”。今天,我阅读了所有的答案。
标签: sql oracle greatest-n-per-group