【发布时间】:2021-10-10 15:09:02
【问题描述】:
我有一个日期列yyyy_mm_dd。我想使用以下逻辑基于它创建一个附加列:
- 如果 yyyy_mm_dd = 一个月的最后一天,则为 1
- 如果 yyyy_mm_dd 不是该月的最后一天,而是数据集中的最大日期,则为 1
- 否则为 0
我想出了这个,它适用于逻辑的第 1 部分和第 3 部分:
select
*,
case
when yyyy_mm_dd == last_day(yyyy_mm_dd) then 1
when yyyy_mm_dd != last_day(yyyy_mm_dd) then 0
end as last_day_of_month
from
my_table
where
yyyy_mm_dd is not null
这很好,然后我尝试为最终逻辑添加以下内容:
when (yyyy_mm_dd == last_day(yyyy_mm_dd) or yyyy_mm_dd == max(yyyy_mm_dd)) then 1
但是它错误地说:
表达式不在 GROUP BY 键 ID 中
有什么方法可以实现这个“一个月的最后一天或最大日期”标志?我不想要每组的 max_date,即id,而是整个数据集中的绝对最大日期
【问题讨论】:
标签: sql group-by hive case hiveql