好的,最初这只是我们与我的一个朋友的笑话,但它变成了有趣的技术问题:)
原文链接:https://www.f2er.com/postgresql/192703.html我有以下的表格:
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
如果我删除此过滤器,总列正确计算,结果正确排序,但所有的东西被选中,这不是我想要的.
那么我该怎么做呢?如何仅选择可以放入包中的物品?