我有一个如下所示的表格
用户ID | 付款ID | 日期时间金额|||
---|---|---|---|---|
UID1 | 12dw4r434t | 2020年8月19日13:40:1210 | ||
UID2 | k2dw86774z | 2020年8月19日14:30:52 | 5 | |
UID3 | 5hjs982835 | 2020年8月17日09:56:08 | 7 | |
UID1 | hg19283jdg | 2020年8月20日07:59:33 | 12 | |
UID1 | 2563ghmn77 | 2020年8月20日08:10:22 | 54 | |
UID2 | 999gegh77d | 2020年8月19日17:11:37 | 67 | |
UID2 | mnnnhsgdje | 2020年8月20日19:18:55 | 67 | |
UID1 | qcc356njd | 2020年8月20日16:10:11 | 87 | |
UID3 | mmk0999111 | 2020年8月18日05:16:29 | 4//tr>||
UID3 | yyy63hgd722020年8月18日05:25:44 | 4 |
您可以使用lead()
和日期算术来获得三者中的第一个:
select pst.*
from (select pst.*,
lead(created_at, 2) over (partition by user_id order by created_at) as created_at_2
from payment_summary_table pst
) pst
where created_at_2 < dateadd(hour, 24, created_at);
这将为用户查看前面2行的付款。如果是在24小时内,那么三次付款都是在24个小时内。
如果您只想要用户,请将select
替换为:
select distinct user_id