查询表数据时在最后加一个字段展示该数据在表中的重复的次数

查询表数据时在最后加一个字段显示该数据在表中的重复的次数
如题 有表数据A

id     name   age  
1      张三     20
2      李四     21
3      张三     20
4      王五     25
5      王五     25
6      王五     25

如上表 张三出现2次 李四出现过1次 而 王五出现过3次 我想查询表返回如下表结构
id     name   age  count
1      张三     20        2
2      李四     21        1
3      张三     20        2
4      王五     25        3
5      王五     25        3
6      王五     25        3
就是追加一个字段 显示 该信息重复的次数 这样的sql 语句如何写呢?




------解决思路----------------------

with c1(id,name,age)
as(
select 1,'张三',20 union all
select 2,'李四',21 union all
select 3,'张三',20 union all
select 4,'王五',25 union all
select 5,'王五',25 union all
select 6,'王五',25
)
,c2(name2,count)
as(select name,count(name) as [count]  from c1 group by name)
select c1.*,count from c1,c2 where c1.name=c2.name2 order by id

------解决思路----------------------
select *,count=COUNT(*) over(partition by name)
from tb
order by id