获取每个月的最大日期

问题描述 投票:0回答:1

我正在尝试使用 SQL Hive 从数据库列中获取每个月的最大日期。 我有一个表格如下:

yyyymmdd
2020-05-01
2020-05-10
2020-05-20
2020-05-27
2020-06-03
2020-06-12
2020-06-21
2020-06-23

我尝试了这段代码:

SELECT  MAX(yyyymmdd) OVER (PARTITION BY last_day(yyyymmdd)) as last_yyyymmdd FROM mytable t

但是我得到了这个结果:

yyyymmdd 最后_yyyymmdd
2020-05-01 2020-06-23
2020-05-10 2020-06-23
2020-05-20 2020-06-23
2020-05-27 2020-06-23
2020-06-03 2020-06-23
2020-06-12 2020-06-23
2020-06-21 2020-06-23
2020-06-23 2020-06-23

我期待的结果:

yyyymmdd 最后_yyyymmdd
2020-05-01 2020-05-27
2020-05-10 2020-05-27
2020-05-20 2020-05-27
2020-05-27 2020-05-27
2020-06-03 2020-06-23
2020-06-12 2020-06-23
2020-06-21 2020-06-23
2020-06-23 2020-06-23
sql database hadoop hive
1个回答
0
投票

一种可能性是按年和月对数据进行分组并将其加入表中

SELECT [yyyymmdd], MAX_MONTH
  FROM Table1 t1
  JOIN
(SELECT format([yyyymmdd],'MM.yyyy') AS  year_month, MAX([yyyymmdd]) MAX_MONTH
FROM Table1
GROUP BY format([yyyymmdd],'MM.yyyy') ) t2 ON t2.year_month = format(t1.[yyyymmdd],'MM.yyyy')
yyyymmdd MAX_MONTH
2020-05-01 2020-05-27
2020-05-10 2020-05-27
2020-05-20 2020-05-27
2020-05-27 2020-05-27
2020-06-03 2020-06-23
2020-06-12 2020-06-23
2020-06-21 2020-06-23
2020-06-23 2020-06-23

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.