Mysql 用于按年份和id获取日期列组的最小值和最大值的配置单元查询

Mysql 用于按年份和id获取日期列组的最小值和最大值的配置单元查询,mysql,sql,oracle,hive,hiveql,Mysql,Sql,Oracle,Hive,Hiveql,我有一个包含两列的表,id和日期。我想获得该特定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

我有一个包含两列的表,id和日期。我想获得该特定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
选择id
,MIN(日期列)作为mindate列
,(最大(日期列)最小(日期列)然后最大(日期列)结束的情况)为最大日期列
,年(日期列)为年列
从测试
按id分组,年份(日期)
按id订购,年份

如果您只需要
日期
部分,可以将其转换为
转换(日期列为日期)

第二次查询的输出是什么?