我想在SQL表中将列设置为特定值1/COUNT(*)
。我想知道如何做到这一点。
为清楚起见,请考虑以下示例。我们有一张桌子table1
TABLE1:
A | B | C
---------------------
1 | 9 | 0
2 | 7 | 0
4 | 8 | 0
3 | 6 | 0
我想将值C
设置为1/COUNT(*)
的列0.25
。所以结果应该是:
TABLE1:
A | B | C
---------------------
1 | 9 | 0.25
2 | 7 | 0.25
4 | 8 | 0.25
3 | 6 | 0.25
但是,我尝试了以下代码:
UPDATE TABLE
SET C = 1/COUNT(*)
它不起作用,并给我一个错误:
Error: ERROR: aggregate functions are not allowed in UPDATE
Position: 21
我应该如何在SQL中执行此操作? 谢谢!
答案 0 :(得分:4)
如果要使用update
,请使用from
子句:
UPDATE TABLE
SET C = 1.0 / c.cnt
FROM (SELECT COUNT(*) as cnt FROM yourtable ) c;
没有理由要有单独的列。您可以随时轻松地计算出这一点:
select t.*,
1.0 / count(*) over ()
from t;
答案 1 :(得分:1)
答案:
UPDATE TABLE SET C = 1.0 / (SELECT COUNT(*) FROM TABLE)