我的表有26列,其中前3列是日,月,年。其余的列有一些我必须显示的信息。现在我必须根据月份的最后一天获取记录。 我试过写代码。
select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day))
但是这将从每个月的最后一天获取记录。当我在记录中没有实际的最后一天时,这段代码将无效。因此,在那个月,我想要一些像MAX日期这样的功能,而不是LAST_DAY。我该如何实现这个功能。
答案 0 :(得分:1)
您想要数据中每个月的最后一个日期。为此:
export PATH=/export/jdhive-2.0.0-HADOOP-2.7.1/bin:/export/hadoop-2.7.1-admin/bin:/export/hadoop-2.7.1-admin/sbin:/export/hadoop-2.7.1-admin/jdk1.7.0_67/bin:/export/servers/jdk1.7.0_71/bin:$PATH
export HIVE_HOME=/export/jdhive-2.0.0-HADOOP-2.7.1
export UDF_PATH=$HIVE_HOME/udf
虽然它不会使这个查询更简单,但您应该在表中将日期存储为 date 。也就是说,一个日期,而不是三个单独的列,用于年/月/日。