Sql 在Amazon红移中使用窗口函数时需要按聚合分组
我需要一个表,其中包含每个产品和月份的GP总和,以及从那时起该产品的GP运行总和。虽然我已经找到了一个解决方法,但这确实让我感到困惑,我希望这里能给我一个提示 在红移中,当我尝试使用窗口和时,如下所示:Sql 在Amazon红移中使用窗口函数时需要按聚合分组,sql,sum,amazon-redshift,window-functions,Sql,Sum,Amazon Redshift,Window Functions,我需要一个表,其中包含每个产品和月份的GP总和,以及从那时起该产品的GP运行总和。虽然我已经找到了一个解决方法,但这确实让我感到困惑,我希望这里能给我一个提示 在红移中,当我尝试使用窗口和时,如下所示: CREATE TABLE "tmp.gp_sum" AS ( SELECT "productID", "month", SUM("gp") AS "gp_sum", SUM("gp") OVER (PARTITION BY p."productID" ORDER BY "month" ROWS
CREATE TABLE "tmp.gp_sum" AS (
SELECT
"productID",
"month",
SUM("gp") AS "gp_sum",
SUM("gp") OVER (PARTITION BY p."productID" ORDER BY "month" ROWS unbounded preceding) as "gp_runsum"
FROM "products"
GROUP BY "productID", "month"
);
DB返回一个错误,说“gp”需要在GROUPBY语句中,但这对我不起作用。我发现的唯一可行方法是嵌套另一个聚合函数,它似乎工作得很好-至少在本例中是这样的:
SUM(SUM("gp")) OVER (PARTITION BY p."productID" ORDER BY "month" ROWS
有人能解释一下吗
谢谢,托马斯
SELECT "productID", "month", SUM("gp") AS "gp_sum"
FROM "products"
GROUP BY "productID", "month"
这对productID
和月份进行求和
。您的窗口函数通过productID
计算SUM
。SQL仍然需要一个“规则”来计算gp\u runsum
byproductID
和month
(分组依据)
您的解决方案(SUM(SUM(…)
)应该可以工作,但您可以始终在单独的sql中计算运行的SUM,然后在productID
上加入
这对productID
和月份进行求和
。您的窗口函数通过productID
计算SUM
。SQL仍然需要一个“规则”来计算gp\u runsum
byproductID
和month
(分组依据)
您的解决方案(SUM(SUM(…)
)应该可以工作,但您可以始终在单独的sql中计算运行的SUM,然后在productID
上加入,尝试以下操作:
CREATE TABLE "tmp.gp_sum" AS
(
SELECT "productID",
"month",
SUM("gp") AS "gp_sum",
SUM("gp") OVER (PARTITION BY p."productID" ORDER BY "month" ROWS unbounded preceding) as "gp_runsum"
FROM "products"
GROUP BY "productID", "month", "gp"
);
试试这个:
CREATE TABLE "tmp.gp_sum" AS
(
SELECT "productID",
"month",
SUM("gp") AS "gp_sum",
SUM("gp") OVER (PARTITION BY p."productID" ORDER BY "month" ROWS unbounded preceding) as "gp_runsum"
FROM "products"
GROUP BY "productID", "month", "gp"
);
你能解释一下吗?你能解释一下吗?