【发布时间】:2018-10-10 00:04:18
【问题描述】:
我有一个 date 列,我试图查询它以仅返回每月最大的日期。
我目前拥有的东西,虽然非常简单,但可以返回 99% 的我正在寻找的东西。例如,如果我按升序列出列,则第一个条目是 2016-10-17,范围最大为 2017-10-06。
需要注意的是,每个月的最后一天可能不会出现在数据中,所以我真的只是想拉回任何现有月份的“最大”日期。
我现在正在运行的查询看起来像
SELECT MAX(date_col)
FROM schema_name.table_name
WHERE <condition1>
AND <condition2>
GROUP BY EXTRACT (MONTH FROM date_col)
ORDER BY max;
这确实返回了我正在寻找的大部分内容 - 我实际上得到的是
"2016-11-30"
"2016-12-30"
"2017-01-31"
"2017-02-28"
"2017-03-31"
"2017-04-28"
"2017-05-31"
"2017-06-30"
"2017-07-31"
"2017-08-31"
"2017-09-29"
"2017-10-06"
这确实是列中每个月的最大值。但是,结果集似乎不包括 2016 年 10 月以来的最大日期值(列中数据的前几个月)。该月的列中有多个值,范围最大为2016-10-31。
如果有人能指出为什么没有返回本月的最大值,我将不胜感激。
【问题讨论】:
-
您仅按月分组,而不是按年和月分组。因此,由于存在“2017-10-06”值,因此大于“2016-10-nn”值。
-
感谢@eurotrash 的回复。这样就解决了。
标签: postgresql