【问题标题】:SQL: COUNT DISTINCT over more groupsSQL:对更多组进行 COUNT DISTINCT
【发布时间】:2018-12-23 01:04:20
【问题描述】:

我有这个问题:

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

我需要的是 COUNT(DISTINCT q.provider_username) 超过 4 周,而不仅仅是一个,而且我不想更改我的 date-trunc。显然我不能使用 OVER(ORDER BY ...) 因为 DISTINCT 没有为窗口函数实现。有没有其他解决方案?

【问题讨论】:

  • 显示一些示例数据和预期输出(仅限文本格式,无图像)。不要指望我们通过查看您的查询来猜测您希望查询返回什么。

标签: sql postgresql count


【解决方案1】:

样本数据和期望的结果会很有帮助。对于您的问题的一种解释,我建议使用相关子查询。日期算术有点神秘,但我认为这就是你想要的:

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;

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 2010-11-23
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多