SQL:COUNT个DISTINCT个更多组

时间:2018-07-15 05:47:24

标签: sql postgresql count

我有这个查询:

SELECT 
        date_trunc('week', q.order_date::date+2)::date-2 AS weekly,
        COUNT(DISTINCT q.provider_username) AS engaged_providers
FROM tbl_quotes q
GROUP BY weekly

我需要在4个星期内计数(DISTINCT q.provider_username),而不仅仅是一个,而且我不想更改日期截断时间。显然我不能使用OVER(ORDER BY ...),因为DISTINCT没有为窗口函数实现。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

样本数据和预期结果将真正有帮助。对于您的问题的一种解释,我建议使用相关子查询。日期算法有点不可思议,但是我认为这是您想要的:

SELECT weekly,
       (SELECT COUNT(DISTINCT q.provider_username)
        FROM tbl_quotes q
        WHERE q.order_date >= w.weekly - interval '3 week' and
              q.order_date < w.weekly + interval '1 week'
       ) as engaged_providers
FROM (SELECT DISTINCT date_trunc('week', q.order_date::date+2)::date-2 as weekly
      FROM tbl_quotes q
     ) w;