Postgresql中按窗口函数结果过滤

2024-01-10

好吧,最初这只是我们和朋友开的一个玩笑,但后来变成了有趣的技术问题:)

我有以下内容stuff table:

CREATE TABLE stuff
(
    id serial PRIMARY KEY,
    volume integer NOT NULL DEFAULT 0,
    priority smallint NOT NULL DEFAULT 0,
);

该表包含我所有物品的记录,以及各自的数量和优先级(我需要多少)。

我有一个指定容量的袋子,比如说1000。我想从桌子上选择所有可以放入袋子的东西,首先包装最重要的东西。

这似乎是使用窗口函数的情况,所以这是我提出的查询:

select s.*, sum(volume) OVER previous_rows as total
 from stuff s
 where total < 1000
 WINDOW previous_rows as
  (ORDER BY priority desc ROWS between UNBOUNDED PRECEDING and CURRENT ROW)
 order by priority desc

然而,它的问题是 Postgres 抱怨:

ERROR:  column "total" does not exist
LINE 3:  where total < 1000

如果我删除此过滤器,总列会得到正确计算,结果会正确排序,但是all东西被选择了,这不是我想要的。

那么,我该怎么做呢?如何只选择可以放入包中的物品?


我不知道这是否符合“更优雅”的条件,但它的编写方式与 Cyber​​nate 的解决方案不同(尽管本质上是相同的)



WITH window_table AS 
( 
   SELECT s.*, 
          sum(volume) OVER previous_rows as total
   FROM stuff s
   WINDOW previous_rows as 
        (ORDER BY priority desc ROWS between UNBOUNDED PRECEDING and CURRENT ROW)
) 
SELECT * 
FROM window_table
WHERE total < 1000
ORDER BY priority DESC 
  

如果“更优雅”意味着避免子选择,那么答案是“否”

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

Postgresql中按窗口函数结果过滤 的相关文章

  • 创建表作为 select 删除 postgresql 中的非空约束

    在 postgres sql 中 创建表时 select 删除了表上的非空约束 例如 对此没有单一命令的解决方案 要基于现有表 包括所有约束 创建表 请使用 create table B like a including constrain
  • 无法安装 psycopg2 (pip install psycopg2)

    我使用的是 MAC 和 python 版本 2 7 14 Collecting psycopg2 Could not fetch URL https pypi python org simple psycopg2 There was a p
  • PostgreSQL 性能 - SELECT 与存储函数

    我正在尝试在 PostgreSQL 上创建一个存储函数来提高性能并存储大查询 并且只需在我的代码中调用该函数即可 例如 如果我有一个函数 CREATE OR REPLACE FUNCTION test max integer RETURNS
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • postgres 有 CLOSEST 运算符吗?

    我正在寻找这样的东西 给定一个表格 id number 1 7 2 1 25 3 1 01 4 3 0 查询SELECT FROM my table WHEREnumberCLOSEST 1 将返回第 3 行 我只关心数字 现在我有一个程序
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • Postgres jsonb数组:查询非空交集

    假设我有一个名为的 JSONB 列value在表中t 这些 JSON 的内部是tags字段是字符串列表 我想对这些标记的 JSON blob 进行查询 foo or bar 所以假设表数据如下所示 value tags other tags
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 如何在SSRS中的表上创建热图?

    如何在 SSRS 中创建这样的内容 颜色将根据行中的值 承销商 从红色变为绿色 所有这些都在一个组中 您可以通过右键单击各个单元格并根据表达式设置填充颜色来完成此操作 In the Image below I ve mistakingly
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • 复选框上的数据绑定

    我目前正在将数据从 SQL 数据库之一提取到我的应用程序中 我可以让它适用于我的文本框和其他项目 但是 我似乎无法让它适用于复选框 这是我正在使用的代码 DataTable dt new DataTable dt using SqlConn
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • 如何使用 typeorm 在 postgres 中保存 json 对象数组

    我正在尝试在 postgres 中保存 jsonb 类型的对象数组 Entity Column type jsonb array true nullable true testJson object 我在邮递员中发送的json testJs
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如

随机推荐

  • 如何在 C# 中将 XMLSerialize 用于 Enum 类型属性?

    我有一个简单的枚举 enum simple one two three 我还有一个具有 type 属性的类simple 我尝试用以下属性装饰它 XmlAttribute DataType int 但是 当我尝试使用序列化它时 它失败了Xml
  • 错误:连接失败(没有到主机的路由)

    上下文 我有一个 Xamarin Android 应用程序 它连接到 WebAPI 以获取不同的信息 问题 尝试访问服务器时出现以下错误 System Net Http HttpRequestException 发送请求时发生错误 gt S
  • 当文本字段为空时,如何在 Xcode UI 测试中测试 UITextField?

    我正在做一个UITest在 Xcode 中 当我记录测试时 它工作正常 但当我运行测试时 它会出现错误 这些是发生错误的代码行 XCUIElement clearTextTextField app textFields containing
  • 在本地 html 文件中使用 JavaScript 设置 Cookie

    我有以下目录树 folder1 folder2 page1 html page2 html 如果我设置一些cookiepage1 html使用 JavaScript 该 cookie 使用的路径是什么 Edit 让我更好地解释一下 我正在处
  • 最佳匹配:错误警告,但输出看起来不错

    我通过 MatchIt 和 optmatch 包执行了最佳匹配 library MatchIt library optmatch data lalonde optimal lt matchit treat age educ black da
  • ionic 2 错误 cordova 不可用

    我正在尝试在新的 ionic 2 项目 最新的 ionic2 版本 中使用 cordova GooglePlus 插件 但我总是遇到有关 cordova 的错误 该插件已正确安装并显示在插件文件夹中 我尝试过的一种方法是 import Go
  • jQuery Fancybox 无法识别元素

    a href https xenogamers org attachment php attachmentid 3655 d 1350682390 img class thumbnail border 0 alt Click image f
  • 将列表的控制台输出转换为真正的 R 列表

    有人刚刚发布了一些控制台输出作为示例 这种情况经常发生 我有将打印输出转换为向量和数据帧的策略 我想知道是否有人有一种优雅的方法将其解析为真正的 R 列表 test lt 1 1 1 0000 1 9643 4 5957 2 1 1 000
  • 定义自定义管道运算符时出现不明确的警告

    在我的过程中我需要执行很多dplyr inner joins 我想我可以为它定义一个自定义管道运算符 如所解释的here https stackoverflow com questions 47475923 custom pipe to s
  • 如何在 iOS 中使用 CIFilter?

    苹果表示 CIFilter 可在 iOS 中使用 但是 在我的 Mac 上 我找不到可链接的 CoreImage 框架 过滤器 可选的核心图像过滤器 提供转换的对象 property 保留 CIFilter 过滤器 即 当我尝试执行类似操作
  • 删除 Plotly 中条形图之间的间隙

    我正在尝试使用 Plotly 在 R 中创建 Marimekko 图表 本质上 这只是一个堆叠的 可变宽度的条形图 两个条形直接相邻 目前 我的尝试如下 创建它的代码在这里 bar test lt plot ly type bar gt l
  • 避免在泛型方法中强制转换为 Nothing

    scala gt def foo U t Any t asInstanceOf U foo U t Any U scala gt val s String foo hi scala gt val n foo hi java lang Cla
  • Spark数据帧过滤器

    val df sc parallelize Seq 1 Emailab 2 Phoneab 3 Faxab 4 Mail 5 Other 6 MSL12 7 MSL 8 HCP 9 HCP12 toDF c1 c2 c1 c2 1 Emai
  • 运算符“+”不能应用于“字符串”和“方法组”类型的操作数[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在检查是否存在包含以下代码的目录 while Directory Exists currentDirectory year T
  • 使用 PL/SQL 创建 Excel 文件 (.xlsx)

    关于我之前的问题返回显式游标的SQL语句 https stackoverflow com questions 41281665 return the sql statement of an explicit cursor 我能够生成 Exc
  • Vue.js v-if 用于属性

    假设我有这个代码 table my attr value complex component Jade 我想渲染它my attr基于传递到组件中的属性 由于 v if 适用于整个元素 我不能做类似的事情 table my attr valu
  • jQuery - 使全局变量可用于多个插件

    我正在为网站创建一组 jQuery 插件 所有这些插件都有共同的功能 即调用 getJSON 这些调用中传递的 URL 根据开发 QA 和生产环境而有所不同 我想将 URL 存储在一个中心位置 以便可以轻松更改 URL 应该存储在哪里 我不
  • 根据 URL / 锚点更改 Facebook 元数据

    我在输入问题时发现对此进行了小型交流将 URL 哈希添加到 Facebook 和 Twitter 共享卡的元数据中 https stackoverflow com questions 16014439 adding a url hash i
  • 是否可以在 Mirror API 中注册顶级意图?

    例如 顶级操作 是 Google 拍照 等 是否可以使用 Mirror API 来注册自定义顶级事件 好吧 格拉斯 咬碎我吧 我的第二个问题是是否可以获取用户语音 使用 OK Glass Google 示例 用户说出 Google 接受并执
  • Postgresql中按窗口函数结果过滤

    好吧 最初这只是我们和朋友开的一个玩笑 但后来变成了有趣的技术问题 我有以下内容stuff table CREATE TABLE stuff id serial PRIMARY KEY volume integer NOT NULL DEF