Hive 查询以按年份和 ID 获取日期列组的最小值和最大值
Hive query to get min and max of date column group by year and id
我有 table 两列,id 和 date.I 想要获取该特定 id 的最大和最小日期,根据那一年。下面是示例数据和我想要的结果
示例数据
id date_col
123 2015-05-01 04:00:00
123 2017-04-01 04:00:00
123 2017-09-01 04:00:00
123 2014-09-01 04:00:00
123 2012-12-01 05:00:00
123 2016-08-01 04:00:00
123 2014-05-01 04:00:00
123 2016-10-01 04:00:00
我期待的结果
123 2014-05-01 2014-09-01
123 2015-05-01
123 2016-08-01 2016-10-01
123 2017-04-01 2017-09-01
我尝试使用以下多个查询,但我不会根据年份进行排序
SELECT id,MAX(date_col) AS maxdate_col,MIN(date_col) AS mindate_col FROM table GROUP BY id
SELECT id,MAX(date_col) AS max_votes,MIN(date_col) AS mindate_col,YEAR(date_col) FROM test GROUP BY id,YEAR(date_col)
试试这个
SELECT id
,MIN(date_col) AS mindate_col
,(CASE WHEN MAX(date_col) <> MIN(date_col) THEN MAX(date_col) END) AS maxdate_col
,YEAR(date_col) AS year_col
FROM test
GROUP BY id,YEAR(date_col)
ORDER BY id,year_col
如果你只想要 date
部分,你可以施放它 CAST(date_col AS DATE)
我有 table 两列,id 和 date.I 想要获取该特定 id 的最大和最小日期,根据那一年。下面是示例数据和我想要的结果 示例数据
id date_col
123 2015-05-01 04:00:00
123 2017-04-01 04:00:00
123 2017-09-01 04:00:00
123 2014-09-01 04:00:00
123 2012-12-01 05:00:00
123 2016-08-01 04:00:00
123 2014-05-01 04:00:00
123 2016-10-01 04:00:00
我期待的结果
123 2014-05-01 2014-09-01
123 2015-05-01
123 2016-08-01 2016-10-01
123 2017-04-01 2017-09-01
我尝试使用以下多个查询,但我不会根据年份进行排序
SELECT id,MAX(date_col) AS maxdate_col,MIN(date_col) AS mindate_col FROM table GROUP BY id
SELECT id,MAX(date_col) AS max_votes,MIN(date_col) AS mindate_col,YEAR(date_col) FROM test GROUP BY id,YEAR(date_col)
试试这个
SELECT id
,MIN(date_col) AS mindate_col
,(CASE WHEN MAX(date_col) <> MIN(date_col) THEN MAX(date_col) END) AS maxdate_col
,YEAR(date_col) AS year_col
FROM test
GROUP BY id,YEAR(date_col)
ORDER BY id,year_col
如果你只想要 date
部分,你可以施放它 CAST(date_col AS DATE)