如何解决计算每个用户的非重复访问并将其分组
SELECT user_id, 总和(区分大小写 当click_date在“ 2020-08-01”和“ 2020-07-25”之间时 然后1 ELSE NULL END)total_visits_0to8_days,
总和(区分大小写 当click_date在“ 2020-07-26”和“ 2020-07-18”之间时 然后1 ELSE NULL END)total_visits_8to14_days,
总和(区分大小写 当click_date在“ 2020-07-19”和“ 2020-07-02”之间时 然后1 ELSE NULL END)total_visits_14to30_days,
总和(区分大小写 当click_date在“ 2020-07-03”和“ 2020-06-02”之间时 然后1 ELSE NULL END)total_visits_30to60_days,
总和(区分大小写 当click_date在“ 2020-06-02”和“ 2020-05-01”之间时 然后1 ELSE NULL END)total_visits_60to90_days
从my_table GROUP BY user_id
我的查询正在为所有组返回NULL,因为我希望每个用户的访问计数汇总 所需的输出:
每个用户ID在已建立的时间窗口内访问的次数总和。
我正在使用COUNT DISTINCT来对每个日期进行一次计数,因此从5月1日到8月1日,每个用户的访问总数不应超过93。谢谢
解决方法
您应将日期转换用于“ click_date” 是日期。对于下面的oracle示例
还请注意,第一个变量“ 2020-07-25”应小于第二个“ 2020-08-01”,这是相反的。
{{1}},
使用BETWEEN a AND b
时,必须确保a
比<=
的{{1}},否则b
总是返回BETWEEN
,这是您的代码中会发生什么。
因此,在所有情况下都请逆转日期。
如果要计算不同的日期,也请使用FALSE
而不是COUNT()
:
SUM()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。