【发布时间】:2013-05-19 11:12:49
【问题描述】:
我有这样的数据:
Date User ID
2012-10-11 a
2012-10-11 b
2012-10-12 c
2012-10-12 d
2012-10-13 e
2012-10-14 b
2012-10-14 e
我想做的是每天按最近两天的范围(在我的实际查询中为 7 天)分组,并获取不同用户 ID 的计数。
例如,我希望结果如下所示:
Date count(distinct userIDs)
2012-10-12 4
2012-10-13 3
2012-10-14 2
例如对于 2012-10-12,我得到了 4 个计数,因为我有 'a'、'b'、'c' 和 'd'。 ' ==> 'a' 和 'b' 来自前一天,'c' 和 'd' 来自从 2012 年 10 月 12 日同一天开始。
同样,对于 2012-10-13,我正在查看 2012-10-13 和 2012-10-12,我得到 'c', 'd',和'e'。
日期列的数据类型是日期。我正在使用 Teradata。
我一直在尝试研究它,但还没有找到适用于我的情况的直接答案。 :-/ 抱歉,如果这是重复的话。非常感谢您的帮助。谢谢!
【问题讨论】:
-
我确信有一种方法可以使用窗口函数来做到这一点,比如
SELECT date, COUNT(distinct user_id) OVER (PARTITION BY date ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)(这是不正确的,我试过了)。我会自己玩这个,直到我弄明白为止!
标签: sql date group-by teradata