sql - PostgreSQL 和顺序数据

标签 sql database postgresql

我有一个数据集,其中包含:

Table { date itemName }

大部分日期是连续的。日期没有重复项[因为它是主键]。

问题分为多个部分(全部与使用 SQL 相关):

  1. 是否可以找出表中列出的日期系列中的空白? 例如:缺少日期 1/2/09-1/3/09
  2. 是否可以找到表格中缺失的日期部分,其范围大于 n(这是一个在运行时确定的数字)?例如:对于 n = 2 日期 1/2/09-1/3/09 未返回,但日期 5/6/09-6/1/09 是。

最佳答案

如果您可以使用 PostgreSQL 8.4,那么 window functions将帮助:

SELECT *
    FROM (SELECT itemName, date, date - lag(date) OVER w AS gap
              FROM someTable WINDOW w AS (ORDER BY date)
         ) AS pairs
    WHERE pairs.gap > '1 day'::interval;

关于sql - PostgreSQL 和顺序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517869/

相关文章:

mysql - 选择所有 child 都满足条件的 self 关系中的行

php - 如何在显示数据库 php mysql 中的表时读取表名

sql - 从文件创建数组

mysql - 将默认值更改为mysql中的子查询

php - 在 MySQL 中使用 distinct 函数

postgresql - Flyway - 管理多个模式不起作用

ruby-on-rails-3 - 尽管经过验证,为什么 Rails 3.2 允许重复记录?

sql-server - 自动将存储过程从 SQL Server 迁移到 Postgres

asp.net - 如何使用 IIS 授予 IIS APPPOOL\DefaultAppPool 对 Asp.net 中存储过程的访问权限?

mysql - SQL查询;从列表中搜索列表