簡體   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