【问题标题】:SQL query to find recent data and compare rows用于查找最近数据并比较行的 SQL 查询
【发布时间】:2020-10-31 05:17:09
【问题描述】:

根据以下信息,我需要创建一个 SQL 查询来选择适当的数据,并在按访问日期(包括时间)排序时根据前 2 个条目输出数据。

输入:
三列表格:车辆牌照地点、访问城市、访问日期

算法:
如果车辆的 2 次最近访问(前 2 个条目)在同一个城市,则将 print 输出。

Else 如果最近 2 次访问(前 2 个条目)在不同的城市,则没有输出。

输出:
车辆的车牌,最后访问的城市

示例:

牌照城市日期
ABC123 柏林 2020 年 1 月 1 日
ABC123 柏林 2020 年 2 月 10 日
ABC123 慕尼黑 2020 年 3 月 15 日
ABC123 慕尼黑 2020 年 3 月 18 日
EFG456 柏林 2020 年 1 月 5 日
EFG456 慕尼黑 2020 年 3 月 10 日
EFG456 柏林 2020 年 6 月 1 日

在示例中,输出中唯一的在线行将是:

ABC123 慕尼黑

EFG456 不包括在内,因为最近两次访问是在不同的城市

【问题讨论】:

  • 请提及数据库。

标签: sql


【解决方案1】:

您可以使用窗口函数(如果您的数据库支持)过滤每个车牌的最后两次访问,然后聚合以获取仅与一个城市相关的组:

select license_plate, min(city) city
from (
    select t.*, row_number() over(partition by license_plate order by date desc) rn
    from mytable t
) t
where rn <= 2
group by license_plate
having min(city) = max(city)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2014-12-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多