我用w / o粘贴了一张图像,我希望有帮助
我正在尝试计算单个行占某一特定列总数的百分比。
我可以在SELECT
语句中使用别名来实现它,但是我可以在列per
的帮助下进行进一步的计算,在列中我可以派生其他列,因此我需要在{ {1}}个查询。我尝试了以下查询,但出现错误:
无效操作:子查询只能返回一列
我没有唯一的ID。我不能在此使用UPDATE
语句。
我要去哪里错了?
IN
答案 0 :(得分:0)
您正在尝试使用4个值更新1列。想象一下,没有子查询:
{{1}}
您的子查询必须返回单个列和一行。
答案 1 :(得分:0)
您的子查询返回多个值和多个行。您需要确切地告诉Redshift,如何将所有返回的值和行应用于UPDATE
编辑过的表。
例如:
UPDATE tbl_a
SET tbl_a.per = code_sum.per
FROM tbl_a
JOIN (SELECT code
, SUM(amnt) AS per
FROM tbl_a
GROUP BY code
) code_sum
ON tbl_a.code = code_sum.code
WHERE per IS NULL
;
侧面说明:为获得最佳查询速度,请不要在查询中添加DISTINCT
,除非您知道需要不同的结果。您要让Redshift执行不必要的额外操作,因为您在同一列上已经有一个GROUP BY
。通常,Redshift能够跳过多余的DISTINCT
步骤,但并非总是如此。