在SQL Query中分组COUNT

时间:2017-10-05 19:05:24

标签: sql-server sql-server-2008 count rank

我试图获得分组计数的总和。

SELECT ig_idx,ig_team1,ig_team2benefit,ig_game_type
FROM (select ig_idx,ig_team1,ig_team2benefit,ig_game_type,
RANK() OVER(partition by ig_root,ig_game_type order by ig_idx asc) AS rank
FROM  info_game ) AS t1
WHERE rank < 2

==================================
idx name        odds    type
----------------------------------
1   Kjelsaas    1.4     dnb
2   Kjelsaas    1.75    1x2
3   Kjelsaas    1.75    ou
4   Kjelsaas    1.8     ah
5   Grorud      3       dnb
6   Grorud      3.8     1x2
7   Grorud      1.36    ou
8   Grorud      2.075   ah
9   Brumunddal  2.25    1x2
10  Brumunddal  1.57    ou
11  Brumunddal  2.2     ah
==================================

我想要一个结果。

==================================
idx name        odds    type count
----------------------------------
1   Kjelsaas    1.4     dnb    4
2   Kjelsaas    1.75    1x2    4
3   Kjelsaas    1.75    ou     4
4   Kjelsaas    1.8     ah     4
5   Grorud      3       dnb    2
6   Grorud      3.8     1x2    2
9   Brumunddal  2.25    1x2    3
10  Brumunddal  1.57    ou     3
11  Brumunddal  2.2     ah     3
==================================

1 个答案:

答案 0 :(得分:3)

我假设您的查询返回第一个表结果?你可以这样做:

with cte_example 
as
(SELECT ig_idx,ig_team1,ig_team2benefit,ig_game_type
FROM (select ig_idx,ig_team1,ig_team2benefit,ig_game_type,
RANK() OVER(partition by ig_root,ig_game_type order by ig_idx asc) AS rank
FROM  info_game ) AS t1
WHERE rank < 2)

select *
       ,count(name) over(partition by name) count
from cte_example

或者您可以将count...over函数放在派生表中?有很多方法可以做到这一点。或者您的查询是尝试,第一个表是数据样本,使其看起来像后者?