negative/minus case 语句中的运算符
negative/minus operator in case statement
我目前正在尝试理解一些代码,但我终究无法弄清楚 negative/minus 运算符在 CASE 语句中做了什么。当我尝试删除它时,它破坏了可视化。
这是一个更大难题的一部分,即弄清楚这部分查询的确切作用。我知道它是某种检查年份的计数器,如果年份是 2017 年,则提取月份。如果不是 2017 年,那么它会提取从现在起 12 个月后的月份,但我不确定它是如何工作的。任何对此 CASE 语句或此函数中的 negative/minus 运算符的深入了解将不胜感激。
MAX(
CASE WHEN (- CASE WHEN EXTRACT(year FROM premium_creation_date) = 2017 --?? some sort of counter
THEN EXTRACT(month FROM premium_creation_date)
ELSE
EXTRACT(month FROM premium_creation_date) + 12
END
+ CASE WHEN EXTRACT(year FROM user_creation_date) = 2017
THEN EXTRACT(month FROM user_creation_date)
ELSE
EXTRACT(month FROM user_creation_date) + 12
END
) = 1
THEN unique_user_count
ELSE
NULL
END
) AS restriction
-
更改 CASE
结果的符号。
当日期的年份是 2017 时,CASE
给出 premium_creation_date
的月份。否则就是月份加 12。
例如2017-05-04
在 CASE
中产生 5,在 -
生效后得到 -5。对于 2018-07-06
那将是 7 + 12 = 19 因此 -19.
实际上,您可以将整个事情反过来,从第二个中减去第一个 CASE
。这样看起来可能更清楚。
我目前正在尝试理解一些代码,但我终究无法弄清楚 negative/minus 运算符在 CASE 语句中做了什么。当我尝试删除它时,它破坏了可视化。
这是一个更大难题的一部分,即弄清楚这部分查询的确切作用。我知道它是某种检查年份的计数器,如果年份是 2017 年,则提取月份。如果不是 2017 年,那么它会提取从现在起 12 个月后的月份,但我不确定它是如何工作的。任何对此 CASE 语句或此函数中的 negative/minus 运算符的深入了解将不胜感激。
MAX(
CASE WHEN (- CASE WHEN EXTRACT(year FROM premium_creation_date) = 2017 --?? some sort of counter
THEN EXTRACT(month FROM premium_creation_date)
ELSE
EXTRACT(month FROM premium_creation_date) + 12
END
+ CASE WHEN EXTRACT(year FROM user_creation_date) = 2017
THEN EXTRACT(month FROM user_creation_date)
ELSE
EXTRACT(month FROM user_creation_date) + 12
END
) = 1
THEN unique_user_count
ELSE
NULL
END
) AS restriction
-
更改 CASE
结果的符号。
当日期的年份是 2017 时,CASE
给出 premium_creation_date
的月份。否则就是月份加 12。
例如2017-05-04
在 CASE
中产生 5,在 -
生效后得到 -5。对于 2018-07-06
那将是 7 + 12 = 19 因此 -19.
实际上,您可以将整个事情反过来,从第二个中减去第一个 CASE
。这样看起来可能更清楚。