在Teradata中不存在的情况下如何通过大小写?

分析员

因此,我创建了一个表,该表包含带有所有客户购买记录的交易表中的以下列:

  1. 年月
  2. 客户ID
  3. 该月的交易数

我正在尝试创建一个表,该表的输出为1. Month-Year,2 .。该月的搅动客户数定义为在过去12个月中没有进行交易的客户。(因此,如果客户仅在2014年1月进行一次购买,则会在2015年2月流失。

如果此人在2015年3月进行了交易,但直到2016年5月才进行交易,那么他们在2016年4月再次进行了交易。

我会很感激这里的任何建议。


我编写的代码在其中起作用,SQL但不起作用Teradata

select 
month_start_date, 

    (select  1 
     from merchantengagement1 t2 
      where 
          t2.month_start_date >= t.month_start_date - INTERVAL '1' YEAR and
              t2.month_start_date < t.month_start_date and 
              transactions > 0  and 
              t.rcvr_ID = t2.rcvr_ID
    ) then 1 else 0 end) as churnedCustomers
from 
merchantengagement1  t
group by month_start_date
牙齿

好吧,由于语法错误(没有CASE),您现有的查询将不会运行,否则它在Teradata中有效。

但是有两个问题:

  • 从不使用YEARMONTH添加间隔(可能会导致月末日期的日期无效),请ADD_MONTHS改用。
  • 诸如此类的相关子查询在所有DBMS中都是不好的,但在Teradata中尤其糟糕,从而导致产品联接。

可以使用OLAP函数来表达您的逻辑,检查以下事务是否提前了12个月以上,或者最新事务是否已经超过12个月了:

SELECT rcvr_ID,
   -- if this date is before the next transaction it's a churn
   ADD_MONTHS(month_start_date, 12) AS churn_date
FROM merchantengagement1
WHERE transactions > 0
QUALIFY -- more than 12 months difference
   churn_date <
   COALESCE(MAX(month_start_date) -- next transaction
            OVER (PARTITION BY rcvr_ID
                  ORDER BY month_start_date
                  ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING)
           , CURRENT_DATE)        -- or today

顺便说一句,没有命名为DBMS SQL(当然,Microsoft尝试将其与他们的产品相关联)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使dababase中不存在大小写,MYSQL也会显示大小写值

在不存在特定值的情况下,通过选择在分组中添加默认值

如何在不区分大小写的情况下匹配字符串中的子字符串

如何在不区分大小写c#的情况下检查枚举值中的“包含”?

默认情况下如何使描述函数“ Ch f”不区分大小写

如何在不区分大小写的情况下按字母顺序排序?

在不区分大小写的情况下,如何使“ ls”首先显示点文件?

如何在不区分大小写的情况下从ressourceManager获取对象?

如何在不进行大小写列出的情况下获取输出?

在这种特殊情况下如何消除区分大小写?

在不区分大小写的情况下计算数组中的相似单词

在SQL中区分大小写的情况下统计每行中属性值的出现

如何仅在不存在的情况下将值附加到数组,如果不存在则将其删除?

如何在不区分大小写的情况下在Java中拆分字符串?

如何在不区分大小写的情况下在mongodb中查询字符串?

Shell脚本:将“通过键入q退出”添加到while大小写已经取决于if的情况下

HBase:在不存在字段的情况下返回的记录

SQLiteDatabase仅在尚不存在的情况下添加

仅在不存在的情况下插入记录

仅在不存在的情况下插入数据

仅在源目录中不存在的情况下删除目标目录中的文件

Scala Slick,仅在不存在的情况下如何创建模式

仅在不存在的情况下如何用Java创建文件?

如何在不使程序崩溃的情况下检查不存在的变量的值?

仅在尚不存在的情况下如何实现方法

在不存在递增列值的情况下,如何复制行和递增列?

PHPUNIT如何在一种情况下测试不存在值的地方?

批处理:如何在不存在的情况下创建快捷方式

仅在不存在的情况下如何将对象添加到数组