如何检查表列中的三个日期是不是连续月份

Posted

技术标签:

【中文标题】如何检查表列中的三个日期是不是连续月份【英文标题】:how to check if the three dates in a table column has continuous months如何检查表列中的三个日期是否连续月份 【发布时间】:2014-01-31 06:50:36 【问题描述】:

我有一个表,其列名 date_tran 显示用户进行任何交易的日期。有什么办法可以检查用户进行的 3 笔交易是在同一个月还是连续 3 个月?

我正在使用以下 sn-p:

SELECT CUST_ID,  DATE_TRAN FROM  FAKE_CUST F WHERE 
          EXISTS( 
                SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-1 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND 
                                        CUST_ID= F.CUST_ID  AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
      and exists(
                SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-2 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND 
                                        CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))

但显示的是表中的所有条目,而不是所需的结果。

【问题讨论】:

【参考方案1】:

    用户在同一个月内完成了 3 笔交易

    类似... 按 getmonth(DATE_TRN) 分组, count(getmonth(DATE_TRN)) >= 3

mysql

SELECT CUST_ID, DATE_TRAN FROM XXX where cust_id in (SELECT cust_id from XXX Group By DATE_FORMAT(DATE_TRAN, '%m') 有 count(DATE_FORMAT(DATE_TRAN, '%m')) > 2)

    用户在 3 个缺点月内完成了 3 笔交易

    按 getmonth(DATE_TRN) 分组,count(getmonth(DATE_TRN)) > 1, count(getmonth(DATE_TRN)-1) > 1, count(getmonth(DATE_TRN)-2) > 1

【讨论】:

我正在用 oracle 编写查询。我将您的查询修改为,但这不起作用 SELECT CUST_ID, DATE_TRAN FROM fake_cust where cust_id in (SELECT cust_id from fake_cust Group By EXTRACT(MONTH FROM DATE_TRAN) 有 (count(EXTRACT(MONTH FROM DATE_TRAN)) > 1 AND count(EXTRACT(MONTH FROM DATE_TRAN)-1) > 1 AND count(EXTRACT(MONTH FROM DATE_TRAN)-2) > 1 ))

以上是关于如何检查表列中的三个日期是不是连续月份的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期

golang怎么对日期和时间进行排序

需要从redshift中的日期列中划分月份和年份

如何删除 Spark 表列中的空格(Pyspark)

为啥我不能从我的 DataFrame 中的“日期”列中提取月份的列? [复制]

Pandas - 检查列中的数字是不是在行中