2017-10-05 32 views
0

J'essaie d'obtenir une somme d'un nombre groupé.COUNT dans une requête SQL

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 
================================== 

Je veux un résultat ceci.

================================== 
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 
================================== 
+0

La première requête renvoie vos données d'exemple? Si oui, qu'est-il arrivé aux 2 rangées de Grorud? Grorud devrait-il avoir 4 ans? – SQLChao

Répondre

3

Je suppose que votre requête renvoie les résultats de la première table? Vous pouvez le faire:

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 

ou vous pouvez peut-être juste mettre la fonction count...over au sein de votre table dérivée? Il y a plusieurs façons de le faire. Ou est votre requête la tentative et la première table est l'échantillon de données pour le faire ressembler à ce dernier?