繁体   English   中英

在子查询,更新表中计算值的实例

[英]count the instances of value in sub-query, update table

我试图计算一个值(mytype)出现在一个不同的id值中的次数,并用此计数(idsubtotal)为每一行更新我的表。 我的桌子:

id   | mytype | idsubtotal
-----+--------+-----------
 44    red  
101    red     
101    red
101    blue
101    yellow
494    red
494    blue
494    blue
494    yellow
494    yellow

我需要计算/更新idsubtotal列,所以就像:

id   | mytype | idsubtotal
-----+--------+-----------
 44    red      1
101    red      2    
101    red      2
101    blue     1
101    yellow   1
494    red      1
494    blue     2
494    blue     2
494    yellow   2
494    yellow   2

当我在下面尝试此操作时,它计算的是mytype值在整个表中出现的次数,但是我需要知道它在id值子组中出现了多少次(例如,“ red”在其中出现了多少次) ID 101行,答案= 2)。

SELECT id, mytype,
COUNT(*) OVER (PARTITION BY mytype) idsubtotal
FROM table_name

我知道将此小计存储在表本身中(相对于需要时实时计算)构成了该表的不良数据模型,但是在我的情况下,我需要这样做。

另外,我的问题与此问题相似,但略有不同,并且我从以前的回答或其他帖子中对SQL的原始理解中,也没有尝试进行任何调整。 TIA有任何想法。

UPDATE table_name a
SET idsubtotal=(  SELECT COUNT(1)
                  FROM table_name  b
                  WHERE a.id=b.id
                  AND a.mytype=b.mytype
                )

当我在下面尝试此操作时,它计算的是mytype值在整个表中出现的次数,但是我需要知道它在id值子组中出现了多少次(例如,“ red”在其中出现了多少次) ID 101行,答案= 2)。

SELECT id, mytype, COUNT(*) 
FROM table_name
GROUP BY id, mytype 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM