【发布时间】:2018-09-23 10:18:09
【问题描述】:
我正在研究 Hive,并且面临滚动计数的问题。我正在处理的示例数据如下所示:
我期待的输出如下所示:
我尝试使用以下查询,但它没有返回滚动计数:
select event_dt,status, count(distinct account) from
(select *, row_number() over (partition by account order by event_dt
desc)
as rnum from table.A
where event_dt between '2018-05-02' and '2018-05-04') x where rnum =1
group by event_dt, status;
如果有人解决了类似的问题,请帮助我。
【问题讨论】:
-
实际上,我无法弄清楚这些汇总数字是如何从这些数据中得出的。
-
嗨戈登,基本上如果你看到日期 05/02 有 A1 A2 和 A3 注册但 A2 也移动到活动状态,这意味着 A1 和 A3 只注册但 A2 是活动的所以注册账户计数为 A1 & A3 = 2,A2 即 1 个帐户显示为活动状态。第二天添加了 3 个帐户 A4、5、6,A4 在同一日期处于活动状态,这意味着 1 被添加到活动状态但 A2 被暂停,所以我们从活动状态减少一个并添加到暂停,所以 A5、A6、A1、A3 仍然存在在已注册的 A4 中处于活动状态,而 A2 处于暂停状态。
-
。 .你的描述有问题。日期都是相同的,没有其他列指定顺序。你怎么知道动作的顺序?记住:SQL 表没有顺序,所以这些信息必须在一个列中。
-
哦,好吧..我很抱歉我是从另一个表生成这些数据,并且我转换了迄今为止的时间戳。我错过了在上面的问题中提到这些信息。那么如果我们有一个时间戳,解决方案会是什么样子呢?