表结构和数据是:
col a col c count
107 0
107 0
107 0
107 0
108 0
我可以编写哪些select语句来获得此结果? 我想要计算'col a'值的数量。
col a col c count
107 4
107 4
107 4
107 4
108 1
答案 0 :(得分:4)
您可以使用count() over()
语法:
select cola,
count(cola) over(partition by cola) CountColC
from yourtable
| COLA | COUNTC |
-----------------
| 107 | 4 |
| 107 | 4 |
| 107 | 4 |
| 107 | 4 |
| 108 | 1 |
如果您想使用此数据执行更新,您将使用:
;WITH cte AS
(
SELECT cola,
colc,
count(cola) over(partition BY cola) CountC
FROM yourtable
)
UPDATE cte
SET colc = countc;
答案 1 :(得分:2)
你可以用这个:
select tableName.col_a, cnt
from tableName inner join
(
select col_a, count(col_a) as cnt
from tableName
group by col_a
) tmp on tableName.col_a = tmp.col_a
在更新查询中使用此方法:
update tableName set col_a = cnt
from
(
select col_a, count(col_a) as cnt
from tableName
group by col_a
) tmp
where tableName.col_a = tmp.col_a
答案 2 :(得分:1)
如果可以删除重复的条目,这将有效:
SELECT cola, COUNT(1)
FROM TABLE1
GROUP BY cola
这将返回:
cola colc 107 4 108 1