我试图从时间戳字段计算15分钟时间间隔内的记录数。我基本上是想计算每个用户id的15分钟时间间隔的数量。我是teradata的新手,所以我可能没有充分利用它的潜力,而是在寻找任何类型的指导。
当前表数据
期望输出
失败的当前sql
SELECT
user_id,
CAST(CREATION_DATE as date format 'YYYY-MM-DD') as contact_date,
CAST(CREATION_DATE as TIME) contact_time,
HOUR(contact_time) AS h,
MINUTE(contact_time)-(MINUTE(contact_time) MOD 15) AS m,
COUNT(*) contact_count
FROM
table1
1条答案
按热度按时间zqdjd7g91#
也许有一种更巧妙的方法来解决这个问题,比如16.10(我认为)中引入了一些新的时态逻辑,但这会起到作用:
基本上,这是做的是缝合在一起的
Period
通过查找15分钟间隔内的相邻记录来确定数据类型。那么我们Normalize
记录每个不同的user_id
制造周期相互交叉或重叠的地方。然后我们只计算剩余的不同时期。输入:
输出: