【发布时间】:2019-11-10 11:54:56
【问题描述】:
我已经用 wat o/p 粘贴了一张图片,希望对你有帮助
我正在尝试计算单个行占某一特定列的百分比。
我可以在带有别名的SELECT 语句中实现它,但是我在导出其他列的per 列的帮助下进行了进一步的计算,所以我需要在UPDATE 查询中使用它。我尝试了以下查询,但出现错误:
无效操作:子查询必须只返回一列
我没有任何唯一 ID。我不能在其中使用IN 语句。
我哪里错了?
UPDATE a
SET per = (SELECT DISTINCT
code,
p,
pd,
ratio_to_report(SUM(amnt)) OVER (PARTITION BY p) AS per
FROM a
GROUP BY code,p,pd
)
WHERE per IS null;
【问题讨论】:
-
。 .我删除了不一致的数据库标签。请仅使用您正在使用的数据库进行标记。样本数据和期望的结果真的很有帮助。
-
您不应存储从其他值中计算的值。从表中删除列 PER 并改为创建视图。否则你就是在自找这样的麻烦。
-
您需要提供一些示例数据和预期的输出。 UPDATE with a JOIN 很可能是您要查找的内容,但是使用最少的代码 sn-p 无法解决您的问题。但是,关于您的错误,只要您有
something = (select...),(select...)部分就必须只返回单行和单列。您选择了多个列,这也将返回多行。所有这些数据如何放在一行和一列中? -
是的,我想我必须加入。如果我得到一些建议会很有帮助
-
我能够在 select 语句中实现百分比值,但每列是临时的,我需要进一步使用每列进行其他计算,所以我面临着困难
标签: sql amazon-redshift