Sql 选择包含第二个最近日期的条目
通常情况下,如果我想取表中每种类型的最新值:Sql 选择包含第二个最近日期的条目,sql,postgresql,greatest-n-per-group,Sql,Postgresql,Greatest N Per Group,通常情况下,如果我想取表中每种类型的最新值: type | date ----------------- A | 2008-07-06 B | 2014-08-02 A | 2009-12-27 A | 2004-03-01 B | 2008-10-17 B | 2015-01-01 我会这样做: SELECT DISTINCT ON (type) type, date FROM t ORDER BY type, date DESC; 但是如果我不想
type | date
-----------------
A | 2008-07-06
B | 2014-08-02
A | 2009-12-27
A | 2004-03-01
B | 2008-10-17
B | 2015-01-01
我会这样做:
SELECT DISTINCT ON (type) type, date
FROM t
ORDER BY type, date DESC;
但是如果我不想得到最近的,而是第二个最近的呢?因此:
type | date
-----------------
A | 2008-07-06
B | 2014-08-02
您可以使用max而不是distinct,顺序如下:
SELECT type,max(date) from t group by type
嗯,看着,我想到了:
SELECT * FROM (
SELECT type, date, ROW_NUMBER()
OVER (PARTITION BY type ORDER BY date DESC) AS row FROM t
) tmp
WHERE tmp.row=2;
这一排还有其他我想要的东西。但在任何情况下,我如何获得的不是最大值,而是最大值的下一个值?不是最近的日期,而是第二个到最近的日期?对于其他项目,您可以将它们添加到分组列表中。其次,您需要嵌套查询。选择*自选择*自订购人。。描述限制2按asc限制1排序