SQL使用COUNT(*)设置列的值
我想在SQL表中将列设置为特定值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
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)
请考虑对你的帖子加评论。试着回答以下问题:你是如何解决的?为什么这是解决方案?有时程序员很匆忙,他只是提供了答案。请考虑在你的帖子中添加评论。试着回答以下问题:你是如何解决的?为什么这是解决方案?有时编码人员很匆忙,这里他只是提供了答案。