sql - 选择第二个最新日期的条目

标签 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

最佳答案

嗯,正在看Grouped LIMIT in PostgreSQL: show the first N rows for each group? ,我想到了:

SELECT * FROM (
  SELECT type, date, ROW_NUMBER()
  OVER (PARTITION BY type ORDER BY date DESC) AS row FROM t
  ) tmp
WHERE tmp.row=2;

关于sql - 选择第二个最新日期的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110421/

相关文章:

mysql - 为什么我们要分配大小(如字符串数据类型中的 char(20) 或 varchar(20),而不是 SQL 中的 int 或 float 等数据类型)?

php - 使用 jQuery (ajax) 和 PHP 插入我的数据库

postgresql - 如何根据 PostgreSQL 中另一列的值限制列中的值?

MySQL 子查询 - 仅查找 LEFT JOIN 中的第一条记录

mysql - SQL 仅选择列上具有最大值的行

MySQL 显示实际事件

mysql - MySQL中栈的实现

sql - 存储库 - 在 native 查询中排序不起作用

sql - postgresql 改变字符变化到字符变化数组

mysql - 复合 Mysql join sql 中每组所需的最大 n