Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择包含第二个最近日期的条目_Sql_Postgresql_Greatest N Per Group - Fatal编程技术网

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排序