gpt4 book ai didi

postgresql - 在 Postgres 中计算每个客户记录的天数

转载 作者:行者123 更新时间:2023-11-29 14:32:21 28 4
gpt4 key购买 nike

假设我有以下数据(注意 id 到日期的差异):

customer_id  created_at
1000 2017-12-29 20:48:54+00
1000 2017-12-30 12:48:56+00
1000 2017-12-30 12:49:26+00
1002 2017-12-30 12:52:36+00
1001 2017-12-30 12:54:15+00
1002 2017-12-30 13:54:15+00
1001 2017-12-30 13:56:58+00
1000 2018-01-02 13:01:13+00
1001 2018-01-02 20:29:19+00
1002 2018-01-02 20:29:31+00
1000 2018-01-03 20:30:28+00
1001 2018-01-03 20:38:40+00

我想获取一个客户有记录的天数。如果一个客户一天有多次记录,那么还是算1条。所以,上面数据的输出应该是:

customer_id  count
1000 4
1001 3
1002 2

我尝试了不同的查询,其中我尝试使用 to_char(created_at, 'YYYY-mm-dd')DISTINCT ON(created_at)count,但我没有得到我想要的聚合结果。例如:

SELECT distinct on (to_char(created_at, 'YYYY-mm-dd')) count(customer_id), customer_id
FROM registration
WHERE created_at >= '2017-12-29' and created_at <= '2018-01-03' and customer_id in (1000,1001,1002)
group by customer_id, created_at;

最佳答案

在派生表中使用distinct(from 子句中的子查询):

select customer_id, count(created_at)
from (
select distinct customer_id, created_at::date
from registration
) s
group by 1
order by 1;

customer_id | count
-------------+-------
1000 | 4
1001 | 3
1002 | 2
(3 rows)

实际上用户 1001 活跃了 3 天,而不是 4 天。

关于postgresql - 在 Postgres 中计算每个客户记录的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797110/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com