【发布时间】:2021-12-15 19:33:40
【问题描述】:
我想根据较早的日期时间删除具有相同 visitor_id 的重复行。例如,对于 visitor_id 2643331144,我想选择第 1 行,因为它具有较早的访问日期时间,并且还保留同一行的 channel 和 visit_page。对于visitor_id 1092581226,我想保留第3行。
| rowno | visitor_id | datetime | channel | visit_page |
|---|---|---|---|---|
| 1 | 2643331144 | 10/3/2021 4:05:29 PM | landing page | |
| 2 | 2643331144 | 10/3/2021 4:05:39 PM | organic search | landing page |
| 3 | 1092581226 | 10/7/2021 1:08:12 PM | price reduced | |
| 4 | 1092581226 | 10/7/2021 1:08:44 PM | organic search | landing page |
| 5 | 1092581226 | 10/7/2021 1:09:04 PM | paid search | unknow |
| 6 | 1092581226 | 10/7/2021 1:09:05 PM | price reduced |
我想要一个如下所示的结果:
| rowno | visitor_id | datetime | channel | visit_page |
|---|---|---|---|---|
| 1 | 2643331144 | 10/3/2021 4:05:29 PM | landing page | |
| 2 | 1092581226 | 10/7/2021 1:08:12 PM | price reduced |
我使用了以下查询,但总访客人数被过度重复。但如果不使用分区,总数将被重复计算,因为同一访问者在同一会话期间有多个频道和页面。
with T as
(select *, row_number() over (partition by visitor_id order by datetime asc) as rank
from table A)
select distinct visitor_id, channel, visit_page
from T
where rank=1
【问题讨论】:
-
我注意到您几乎所有的问题都得到了回答,但没有一个答案被接受。接受有用的答案不仅是一种好习惯,而且可以减少重复并增加您的问题得到实际回答的机会。
-
感谢您的建议!我刚刚检查了我之前的所有问题并选择了有用的问题。
-
@Lion 你能多解释一下是什么问题吗?此查询未选择正确的行?还是什么?
-
或者显示一个你想要的结果的例子
-
@Felipe 我刚刚发布了我想要的结果,谢谢
标签: sql amazon-web-services amazon-athena presto