如何使用 SQL 获得连续日期之间的最大差异
How to get Maximum Difference between Dates in a row using SQL
Date 1
Date 2
Date 3
Date 4
LineCount
Month_Gap
2020-01-01
2019-10-01
2019-09-06
1
2020-01-01
2019-10-01
2019-09-13
2019-09-06
2
0
2020-01-01
2019-10-01
2019-08-13
2019-09-06
2
1
如果 LineCount
为 1,则 Month_Gap
应该是 (Date1 & Date3) 和 (Date2 & Date3) 之间的最大月份差。 Date3 将始终在 Date1 和 Date2 之间。
在这种情况下,输出应该是 (2020/01/01 - 2019/09/06) 和 (2019/10/01 - 2019/09/06) 之间的最大月份差,即 3 个月:
Date 1
Date 2
Date 3
Date 4
LineCount
Month_Gap
2020-01-01
2019-10-01
2019-09-06
1
3
2020-01-01
2019-10-01
2019-09-13
2019-09-06
2
0
2020-01-01
2019-10-01
2019-08-13
2019-09-06
2
1
我正在尝试这样的事情,但不确定如何去做 -
CASE WHEN LineCount
= 1 THEN MAX(DATE_DIFF(.....),我猜这是行不通的。
您应该使用的模式是
SELECT TIMESTAMPDIFF("MONTH", LEAST(date1,date2,date3,date4), GREATEST(date1,date2,date3,date4)) as `maximum_difference`;
这将简单地浏览您的列,找到最小和最大的,然后 return 结果。
SELECT
CASE WHEN LineCount = 1 THEN GREATEST(DATE_DIFF('month', Date3, Date1),
DATE_DIFF('month', Date3, Date2)) END AS Month_Gap
Date 1 | Date 2 | Date 3 | Date 4 | LineCount | Month_Gap |
---|---|---|---|---|---|
2020-01-01 | 2019-10-01 | 2019-09-06 | 1 | ||
2020-01-01 | 2019-10-01 | 2019-09-13 | 2019-09-06 | 2 | 0 |
2020-01-01 | 2019-10-01 | 2019-08-13 | 2019-09-06 | 2 | 1 |
如果 LineCount
为 1,则 Month_Gap
应该是 (Date1 & Date3) 和 (Date2 & Date3) 之间的最大月份差。 Date3 将始终在 Date1 和 Date2 之间。
在这种情况下,输出应该是 (2020/01/01 - 2019/09/06) 和 (2019/10/01 - 2019/09/06) 之间的最大月份差,即 3 个月:
Date 1 | Date 2 | Date 3 | Date 4 | LineCount | Month_Gap |
---|---|---|---|---|---|
2020-01-01 | 2019-10-01 | 2019-09-06 | 1 | 3 | |
2020-01-01 | 2019-10-01 | 2019-09-13 | 2019-09-06 | 2 | 0 |
2020-01-01 | 2019-10-01 | 2019-08-13 | 2019-09-06 | 2 | 1 |
我正在尝试这样的事情,但不确定如何去做 -
CASE WHEN LineCount
= 1 THEN MAX(DATE_DIFF(.....),我猜这是行不通的。
您应该使用的模式是
SELECT TIMESTAMPDIFF("MONTH", LEAST(date1,date2,date3,date4), GREATEST(date1,date2,date3,date4)) as `maximum_difference`;
这将简单地浏览您的列,找到最小和最大的,然后 return 结果。
SELECT
CASE WHEN LineCount = 1 THEN GREATEST(DATE_DIFF('month', Date3, Date1),
DATE_DIFF('month', Date3, Date2)) END AS Month_Gap