我必须在Hive UI(SQL和Hive的混合)中编写代码,
以下是询问:
Start date End date flag
10/10/19 defult date 0
11/10/19 10/20/19 1
11/21/19 10/20/19 1
11/21/19(2nd entry) default date 0
如果一个月中有1个条目,则标志为0,如果同一月有多个条目,则最新日期的标志为0,其他标志为1。
这还包括时间戳,如果同一天有两个条目,则最新标志将为0。
请让我知道更多详细信息。谢谢
答案 0 :(得分:0)
您必须将数据存储为字符串,因为“默认”不是有效的日期值。那不是一个好的格式,但是您可以使用它。
您要row_number()
:
select t.*,
(case when row_number() over (partition by substr(startdate, 1, 2), substr(startdate, 7, 2)
order by startdate desc
) = 1
then 0 else 1
end) as flag
from t;
当然,如果将列存储为日期/时间值,则使用适当的函数来提取月份和年份。