SQL使用COUNT(*)设置列的值

SQL使用COUNT(*)设置列的值,sql,postgresql,Sql,Postgresql,我想在SQL表中将列设置为特定值1/COUNT(*)。我想知道怎么做 为了使它更清楚,请考虑下面的例子。我们有一个表table1 TABLE1: A | B | C --------------------- 1 | 9 | 0 2 | 7 | 0 4 | 8 | 0 3 | 6 | 0 我想将值为1/COUNT(*)的列C设置为0.25。因此,结果应该是: TABLE1: A | B | C

我想在SQL表中将列设置为特定值
1/COUNT(*)
。我想知道怎么做

为了使它更清楚,请考虑下面的例子。我们有一个表
table1

TABLE1:
    A  |  B  |  C  
---------------------
    1  |  9  |  0
    2  |  7  |  0
    4  |  8  |  0
    3  |  6  |  0
我想将值为
1/COUNT(*)
的列
C
设置为
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中执行此操作?
谢谢大家!

如果需要
更新
,请使用
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;

如果需要
更新
,请使用
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;
答案是:

UPDATE TABLE SET C = 1.0 / (SELECT COUNT(*) FROM TABLE)
答案是:

UPDATE TABLE SET C = 1.0 / (SELECT COUNT(*) FROM TABLE)

请考虑对你的帖子加评论。试着回答以下问题:你是如何解决的?为什么这是解决方案?有时程序员很匆忙,他只是提供了答案。请考虑在你的帖子中添加评论。试着回答以下问题:你是如何解决的?为什么这是解决方案?有时编码人员很匆忙,这里他只是提供了答案。