如何计算每个用户每天的积分,以及从开始到当天在 clickhouse 中的所有积分
Posted
技术标签:
【中文标题】如何计算每个用户每天的积分,以及从开始到当天在 clickhouse 中的所有积分【英文标题】:how can I calculated point of each user per day with sum all the points from beginning to that day in clickhouse 【发布时间】:2020-09-01 12:55:22 【问题描述】:我在 clickhouse 中有这些数据:
每天每个用户的最终点是从开始到当天的总和(点)。 例如:用户 1 在 2020-07-02 的积分是 800,在 2020-07-03 是 200。
我需要这个结果:每个用户每天的积分:
【问题讨论】:
【参考方案1】:select uid, d, t from (
select uid, groupArray(date) dg, arrayCumSum(groupArray(spt)) gt from
(select uid, date, sum(pt) spt from
(select 1 tid, '2020-07-01' date, 1 uid, 500 pt
union all
select 1 tid, '2020-07-02' date, 1 uid, 300 pt
union all
select 1 tid, '2020-07-03' date, 1 uid, -600 pt)
group by uid, date
order by uid, date)
group by uid) array join dg as d, gt as t
┌─uid─┬─d──────────┬───t─┐
│ 1 │ 2020-07-01 │ 500 │
│ 1 │ 2020-07-02 │ 800 │
│ 1 │ 2020-07-03 │ 200 │
└─────┴────────────┴─────┘
【讨论】:
谢谢,但我需要知道每个用户每天的观点,而不仅仅是现在有交易的日子我有这个结果:2020-07-02 500 2020-07-06 650 2020-07 -07 1150 2020-07-08 1650 2020-07-12 1850 2020-07-13 1970 2020-07-15 470 2020-07-25 670 2020-08-03 780 2020-08-10 910 2020-08-1 1030 2020-08-12 1410 2020-08-15 1530 我需要知道这个用户在“2020-07-03 ,2020-07-04 ,2020-07-05”中的点是500 对于缺少的日子,您可以将结果与一些日历表结合起来。或使用时隙功能。或从日期开始订购。以上是关于如何计算每个用户每天的积分,以及从开始到当天在 clickhouse 中的所有积分的主要内容,如果未能解决你的问题,请参考以下文章