【发布时间】:2019-09-29 23:21:00
【问题描述】:
我有一个使用SUM() OVER 的子查询的查询。虽然子查询本身可以正常工作,但在外部查询的上下文中使用时,不会应用聚合。
我制作了这个测试用例来近似我想要做的事情:
CREATE TEMPORARY TABLE TestNumbers
(id INTEGER PRIMARY KEY, number INTEGER);
INSERT INTO TestNumbers (number)
VALUES (10), (15), (20), (25), (30);
SELECT SUM(number) OVER (ORDER BY id) FROM TestNumbers;
这将返回预期结果...所有值的滚动总和。 10、25、45、70、100。
但是,如果我将其用作子查询...
SELECT (
SELECT SUM(number) OVER (ORDER BY id)
) FROM TestNumbers;
我得到一个未应用聚合的结果。 10, 15, 20, 25, 30.
如何在子查询中将此聚合与 OVER 一起使用?
【问题讨论】:
-
我不明白你的问题。你提到了
update,但剩下的问题只有selects。 -
@GordonLinoff 是的,抱歉,我试图将其分解为最简单的可重现形式,但认为其原因至少需要一些解释。我想如果我能让
SELECT与内部SELECT一起工作,我会让UPDATE没问题。 -
@GordonLinoff 删除了关于
UPDATE的令人困惑的内容。感谢您查看我的问题!
标签: sql sqlite aggregate-functions window-functions