【发布时间】:2012-08-08 07:12:16
【问题描述】:
我正在尝试计算一个值 (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 值子组中的次数(例如,“红色”在 id 101 行中出现了多少次,答案 = 2)。
SELECT id, mytype,
COUNT(*) OVER (PARTITION BY mytype) idsubtotal
FROM table_name
我知道将这个小计存储在表本身中(而不是在需要时实时计算)构成表的错误数据模型,但在我的情况下我需要这样做。
另外,我的问题与this question 类似,但略有不同,我没有尝试使用我从之前的回复或其他帖子中对 SQL 的非常原始的理解进行调整。 TIA 的任何想法。
【问题讨论】: