【问题标题】:Eliminating duplicate values based on one column's value根据一列的值消除重复值
【发布时间】:2021-07-03 19:35:43
【问题描述】:

我有一个存储网络流量数据的表,我注意到每条记录都有重复的条目,具有不同的“uploaded_at”日期。本质上,我只是想删除所有重复项并保留最新的日期值。

这是我目前拥有的,每个实例都有颜色编码:

这就是我需要的最终结果:

所有这些数据都存储在一个表中,我确信窗口函数是我需要的,但我还不能破解它。

【问题讨论】:

  • 1) 请不要将图像用于数据...使用格式化文本。 2)你试过什么?你在哪里卡住了?我们需要看看你的尝试。
  • 请阅读this,了解一些改进问题的技巧。您会惊讶地发现,我们猜测日期是date 的频率,结果却是varchar。 DDL 避免了那一点不愉快。

标签: sql sql-server tsql duplicates window-functions


【解决方案1】:

你描述的是聚合:

select page_url, full_date, browser, browserlang, city, connection, country,
       max(uploaded_at)
from t
group by age_url, full_date, browser, browserlang, city, connection, country;

如果您想要最近一行中的其他列,则窗口函数将是合适的。但是您可以使用 max() 获取日期,这是唯一似乎不是关键列的列。

【讨论】:

    【解决方案2】:

    这是一种方法:

    select * from (
    select * , row_number() over (partition by page_url,full_date,browser,browserlang,city,connection,country order by uploaded_at desc) rn
    from table
    ) t
    where rn = 1
    

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 2014-02-28
      • 2019-05-29
      • 2018-05-27
      • 2014-01-22
      • 2021-06-24
      • 1970-01-01
      • 2016-07-11
      相关资源
      最近更新 更多