Postgresql 创建组后x天生成组成员身份计数
我有一个包含组id、成员id和创建位置的表 我正试图追踪团队成员随时间的增长情况。由于组id是在第一个成员id加入时创建的,因此给定组的mincreated应该给出创建日期。我认为这段错误的代码说明了我在本例中试图在月份级别执行的操作:Postgresql 创建组后x天生成组成员身份计数,postgresql,Postgresql,我有一个包含组id、成员id和创建位置的表 我正试图追踪团队成员随时间的增长情况。由于组id是在第一个成员id加入时创建的,因此给定组的mincreated应该给出创建日期。我认为这段错误的代码说明了我在本例中试图在月份级别执行的操作: SELECT brand_id, min(created_at) as created_date, min(created_at) + INTERVAL '1 month' as end_date, count(member_id
SELECT brand_id,
min(created_at) as created_date,
min(created_at) + INTERVAL '1 month' as end_date,
count(member_id)
FROM member_group
HAVING created_at < end_date
group by 1
在我看来,您正在寻找这样的查询:
SELECT g.brand_id, x.created_date, x.end_date, count(g.member_id)
FROM member_group g
JOIN (
SELECT brand_id,
min(created_at) as created_date,
min(created_at) + INTERVAL '1' month as end_date
FROM member_group
GROUP BY brand_id
) x
ON ( g.brand_id = x.brand_id
AND g.created_at BETWEEN x.created_date AND x.end_date )
GROUP BY g.brand_id, x.created_date, x.end_date
在select
brand_id,
count(created_at < brand_date + interval '1 month' or null) as total
from
member_group
inner join (
select brand_id, min(created_at) as brand_date
from member_group
group by 1
) s using (brand_id)
group by 1
order by 1
;