返回重新激活的用户Teradata SQL

时间:2020-07-10 06:59:25

标签: sql teradata lag teradata-sql-assistant lead

我正在尝试形成一个查询,用于返回,重新激活和WAU的定义如下:

  • 返回WAU-上周有效
  • WAU-上周未启用,但在最近30天内有效
  • 重新激活的WAU – 30天内看不到

我有过去60天的表格,其中包含cust_id,登录日期,但不能运行滞后功能(Teradata ODBC连接)。我不断收到此错误:

[3706]语法错误:数据类型“ logindate”与“已定义”不匹配 输入名称。我的格式是:选择....滞后(logindate,1)超过(分区 由cust_id按1 asc排序,作为lag_ind从(....

请为上述3种情况提供帮助。

1 个答案:

答案 0 :(得分:0)

您可以汇总以获得预期的答案:

select cust_id,
   case
     when max(logindate) > current_date - 7  -- active last week
       then 'Returning WAU' 
     when max(logindate) > current_date - 30 -- not active last week, but active within last 30 days
       then 'WAU'
     else 'Reactivated WAU'                  –- not seen in 30+ days
   end
from tab
group by 1

关于LAG的问题,在您必须重写之前,此问题已在16.10中引入:

lag(logindate, 1)
over (partition by cust_id
      order by col asc) as lag_ind

max(logindate)
over (partition by cust_id
      order by col asc
      rows between 1 preceding and 1 preceding) as lag_ind

提示:切勿在OLAP函数中使用ORDER BY 1,这是文字值一个,而不是第一列。