首页 > 解决方案 > 每天访问我的商店 4 次或超过 4 次的 user_id 的每日计数

问题描述

样品表

我有一张访问过我平台的 user_id 表。我只想计算每个用户和每天访问我的商店 4 次或更多次的用户 ID,持续时间为 10 天。为了实现这一点,我使用了这个查询:

select date(arrival_timestamp), count(user_id)
from mytable
where date(arrival_timestamp) >= current_date-10
and date(arrival_timestamp) < current_date
group by 1
having count(user_id)>=4
order by 2 desc
limit 10; 

但是这个查询实际上是在获取计数值大于 4 的所有用户,而不是每天都覆盖几乎所有用户,因此我无法仅隔离在特定日期多次访问我的商店的用户。感谢您在这方面的任何帮助。

谢谢

标签: sqlpostgresqlgroup-bycountaggregate-functions

解决方案


你可以试试这个

with list as (
select user_id, count(*) as user_count, array_agg(arrival_timestamp) as arrival_timestamp
from mytable
where date(arrival_timestamp) >= current_date-10
and date(arrival_timestamp) < current_date
group by user_id)
select user_id, unnest(arrival_timestamp)
from list
where user_count >= 4

推荐阅读