PostgreSQL:间隔“10 天”和当前行之间的范围

2024-03-23

我有一张表,用于存储每件商品的每日价格。如果价格尚未更新,则当天没有该商品的记录。

我需要编写一个查询,为每个商品检索最新价格,并具有从当前行日期起 10 天的回溯窗口,否则返回NULL。我想用一个来实现这一点RANGE BETWEEN INTERVAL陈述。就像是:

SELECT
    DATE(datetime),
    item_id,
    LAST(price) OVER(
        PARTITION BY item_id
        ORDER BY datetime DESC
        RANGE BETWEEN INTERVAL '10 DAYS' AND CURRENT ROW
    ) AS most_recent_price_within_last_10days
FROM ...
GROUP BY
    date,
    item_id,
    price

不幸的是这个查询引发了一个错误:

LINE 20:  RANGE BETWEEN INTERVAL '10 DAY' PRECEDING AND CURRENT ROW
          ^

我看到一篇旧博客文章说这样的操作在 Postgres 中是不可能的。这仍然准确吗?


您可以使用 ROW_NUMBER() 提取每个项目在过去 10 天内的最新记录:

SELECT * 
FROM (
    SELECT
        DATE(datetime),
        item_id,
        price AS most_recent_price_within_last_10days,
        ROW_NUMBER() OVER(PARTITION BY item_id ORDER BY datetime DESC) rn
    FROM ...
    WHERE datetime > NOW() - INTERVAL '10 DAY'
) x WHERE rn = 1

在子查询中,WHERE子句对日期范围进行过滤; ROW_NUMBER() 为具有相同 item_id 的记录组中的每个记录分配一个排名,最新的记录在前。然后,外部查询仅过滤行号为 1 的记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL:间隔“10 天”和当前行之间的范围 的相关文章

  • 显式与隐式 SQL 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数
  • Postgres where 子句比较时间戳

    我有一个表 其中列的数据类型timestamp 其中包含一天的多条记录 我想选择与日期对应的所有行 我该怎么做 Assuming you actually mean timestamp because there is no datetim
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • PostgreSQL 如何创建数据库或模式的副本?

    有没有一种简单的方法可以在 PostgreSQL 8 1 中创建数据库或模式的副本 我正在测试一些软件 它对数据库中的特定模式进行大量更新 我想复制它 以便我可以与原始版本进行一些比较 如果它位于同一服务器上 则只需使用带有 TEMPLAT
  • 将错误保存到 MySQL 数据库

    我有一个 php 查询来更新 MySQL 数据库 请参见下文 sql update hr payroll set payroll number payroll number tax code tax bacs ref bacs ref pa
  • Drupal 视图 - 自定义/修改 SQL

    我遇到了 配置文件复选框 模块的问题 该模块存储以逗号分隔的自定义配置文件字段 问题是我是否创建一个视图来按值过滤 SQL 结果最终是这样的 AND profile values profile interests value in Bus
  • 如何查找列中未使用的ID? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL查询查找丢失的序列号 https stackoverflow com questions 1057389 sql query to find missing sequence numbers 我
  • postgresql-按每个元素中的单词对数组进行排序

    有字符串数组 ARRAY CAT CAT DOG CAT DOG Cat 现在我想根据每个元素中的单词数对该数组进行排序 我已经尝试过 但没有取得任何成功 我想要这个输出 ARRAY CAT DOG CAT DOG CAT Cat 我怎样才
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • 如何在sql server中对行号进行内连接

    SQL Server 2008 两张表 表A有以下数据 RowA RowB RowC RowD 表B有以下数据 Row4 Row3 Row2 Row1 我想得到以下输出 RowA Row1 RowB Row2 RowC Row3 RowD
  • INNER JOIN 后从多个表获取最大日期

    我有以下两个表 table 1 ID HOTEL ID NAME 1 100 xyz 2 101 pqr 3 102 abc table 2 ID BOOKING ID DEPARTURE DATE AMOUNT 1 1 2013 04 1
  • ORACLE:未找到数据——但数据存在

    调试包过程 当实际上有数据时却找不到数据 仅测试 SELECT SELECT trim trailing from GL SECURITY as DUMMY FROM b2k user b2k WHERE sms username FUCH
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 什么会导致 Oracle ROWID 更改?

    AFAIK Oracle 中的 ROWID 表示相应数据文件中记录的物理位置 在什么情况下记录的ROWID可能会改变 我所知道的一个是分区表上的更新 它将记录 移动 到另一个分区 还有其他情况吗 我们的大多数数据库都是 Oracle 10
  • 日志中每天的每周活跃用户数

    我想知道是否有人可以帮助我使用一些 SQL 来返回两天或更长时间内登录到数据库表的唯一用户数量 让我们使用 7 天作为参考 我的日志表在每一行中包含时间戳 ts 和 user id 表示该用户当时的活动 以下查询返回此日志中的每日活跃用户数
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间

随机推荐

  • 使用 PHP 上传非常大的数据

    我想允许将非常大的文件上传到我们的 PHP 应用程序中 数百兆 8 GB 然而 这存在一些问题 Browser HTML 上传的反馈很糟糕 我们需要轮询进度 这有点傻 或者根本不显示任何反馈 Flash 上传程序在开始上传之前将整个文件放入
  • PHP,读取通过cURL发送的XML文件

    我有这段代码 通过 cURL 将 XML 文件中的数据发送到新闻办公室 现在我希望得到媒体的反馈 表明我的订单已确认或完成 我也希望将其包含在 XML 文件中 我知道如何通过curl发送文件 现在我想知道如何接收它们 以便我可以读出数据 欢
  • 优化:将浮点数乘以整数还是另一个浮点数更快

    如果我尝试将浮点数乘以整数 则将其乘以整数表示的整数是否更快 int x float y 0 5784f x Where x contains a dynamically chosen whole number 或通过另一个浮点数 前提是精
  • 猫鼬网络服务器 helloworld 程序

    我遇到了一个名为 mongoose 的嵌入式 Web 服务器http code google com p mongoose http code google com p mongoose 我读了维基 它很棒 我搜索了一些示例 hello w
  • iOS 中屏幕关闭/设备锁定时定时器不运行

    应用程序位于后台 在与 BLE 设备断开连接时会收到回调 之后应用程序必须等待一段时间 1 分钟 然后执行一些代码 如果屏幕打开 即使在后台 应用程序也会按预期运行 但是 如果屏幕关闭 则计时器将无法工作 并且应用程序不会按预期执行 这是
  • bash 正则表达式带引号?

    下面的代码 number 1 if number 0 9 then echo matched fi 作品 但是 如果我尝试在正则表达式中使用引号 它就会停止 number 1 if number 0 9 then echo matched
  • Angular Material Stepper - 如何动态创建组件以加载到步骤中

    我看过很多类似的帖子 我希望能够使用 ngFor创建组件然后加载到步骤中材料步进机 https material angular io components stepper overview 我一直在关注一个动态加载示例 https sta
  • Symfony 2.8+,教义继承和形式

    在开始之前 请注意我正在学习 symfony 所以请记住这一点 我只是想了解它是如何工作的 这就是我想要实现的目标 我想使用学说制作一个实体继承的简单示例 这就是我的示例的样子 摘要父类 特点 儿童1班 Magician 儿童2班 Warr
  • 如何更改mvc3中razor中LabelFor的显示名称?

    在我用过的剃须刀引擎中LabelFor显示名称的辅助方法 但显示名称似乎不太好显示 所以我需要更改我的显示名称该怎么做 Html LabelFor model gt model SomekingStatus new class contro
  • OpenCV - 薄板样条翘曲的合适实现

    我有一张脸的形状以及该脸的重建 我想对初始形状的相应图像进行建模 基本上 我想将点从原始形状移动到面部重建指示的位置 我尝试通过使用薄板样条翘曲来做到这一点 它的实现如下 http ipwithopencv blogspot ro 2010
  • 在 Asp.Net Mvc 中使用 Ajax 刷新表列表

    我的模式有问题 在创建新条目后 我的表列表没有显示表中最后创建的行 在我的数据库中它已经存在 它仅在刷新页面后才显示 我尝试了一些东西 但只第一次起作用 来自 在 ASP NET MVC 中使用 AJAX 刷新表 https stackov
  • 使用ajax url调用函数

    希望我能正确地问这个问题 因为我知道我想要它做什么 但似乎无法从搜索中找到任何答案 我有一个 func php 页面 其中包含所有函数 并且我希望 ajax 使用该页面中的一个函数 func php function toptable ec
  • Python DataFrame 从每日数据中选择每月增量的行

    让我们直接进入问题吧 以下为每日数据 AAA BBB CCC date 2012 04 16 44 48 28 48 17 65 2012 04 17 44 59 28 74 17 65 2012 04 18 44 92 28 74 17
  • CouchDB 对 _users 数据库的读/写限制

    我想限制用户权限 以便普通用户只能读 写自己的用户文档 我设法设置写入权限 以便用户只能编辑自己的文档 通过设计文档中的 validate doc update 函数 现在我只需限制用户查看用户列表或其他用户文档即可 如果我将数据库读取权限
  • 使用 Scala Slick 实现高阶函数,实现 DRY 优点

    我知道我的 Scala Slick 数据访问层应该是什么样子 但我不确定这是否真的可能 假设我有一个 User 表 其中包含 id 电子邮件 密码等常用字段 object Users extends Table String String
  • Sailsjs/waterline 指定模型中的小数位数

    我如何告诉我的帆模型我想要一些特定的小数位type float 属性 喜欢decimalPlaces 4或者类似的东西 问题是 当我向此条目发布值时 磁盘上的值会被截断为 00 数百 个地方 说我想要 3243 2352362按原样存储 目
  • ENOENT:没有这样的文件或目录。?

    这是发布数据和文件时出现的错误 我遵循 academind 教程来构建 Restful API 服务 我也一直在寻找此类错误的答案 但对我来说没有任何作用 我使用 multer 上传文件 文件夹 上传 在文件夹中可用 但显示 ENOENT
  • Tomcat context.xml 中的资源名称属性如何工作?

    我们正在使用 JNDI 来查找我们的数据库连接 在Tomcat的全局context xml文件中 我们有类似以下内容
  • 什么是 0x43 MIDI 事件?

    我正在尝试编写一个 MIDI 解析器 但我遇到了官方文档中未记录的 MIDI 事件 即http www midi org techspecs midimessages php http www midi org techspecs midi
  • PostgreSQL:间隔“10 天”和当前行之间的范围

    我有一张表 用于存储每件商品的每日价格 如果价格尚未更新 则当天没有该商品的记录 我需要编写一个查询 为每个商品检索最新价格 并具有从当前行日期起 10 天的回溯窗口 否则返回NULL 我想用一个来实现这一点RANGE BETWEEN IN