【问题标题】:Fetching last duplicate row with the count of times that row was duplicated in PostgreSQL?使用该行在PostgreSQL中重复的​​次数来获取最后一个重复行?
【发布时间】:2022-10-15 00:05:45
【问题描述】:

这是我目前的看法:

select u.*
from users u
join(
      select iid, usr, position,max(created_at) as ca
      from users
      group by iid, usr, position
    
    ) j on j.ca = u.created_at

这将获取最近重复行的列表。

EX TABLE: 10001 User 1 intern 2022-10-14 00:00:00
          10002 User 2 intern 2022-10-15 00:00:00
          10003 User 3 intern 2022-10-13 00:00:00
          10003 User 3 p.a    2022-10-15 00:00:00
          10001 User 1 p.a    2022-10-16 00:00:00

使用查询后:

          10001 User 1 p.a    2022-10-16 00:00:00
          10003 User 3 p.a    2022-10-15 00:00:00
          10002 User 2 intern 2022-10-15 00:00:00
          

我现在要做的是添加一个额外的列来添加重复行的计数。

预期结果:

          10001 User 1 p.a    2022-10-16 00:00:00 [2]
          10003 User 3 p.a    2022-10-15 00:00:00 [2]
          10002 User 2 intern 2022-10-15 00:00:00 [1]

有没有办法做到这一点,还是我必须编写另一个查询来获得计数?我也在考虑将 max 与内部连接的计数分层,但可能因为我使用错误而无法正常工作。

【问题讨论】:

    标签: sql database postgresql


    【解决方案1】:

    如果您需要每个组中涉及的行数,只需添加 count(*)

    select u.*
    from users u
    join(
          select iid, usr, position,max(created_at) as ca, count(*) as num_dup
          from users
          group by iid, usr, position
        
        ) j on j.ca = u.created_at
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2021-02-08
      • 2011-11-26
      • 2019-07-12
      相关资源
      最近更新 更多