2010-07-20 6 views
0

permet de dire que j'ai cette tablegroupe sql par où la déclaration

user|group|acceptance 
1 | a | -1 
2 | a | 2 
3 | b | 1 
4 | b | 2 
5 | b | 2 
6 | c | -1 

comment puis-je compter le nombre d'utilisateurs dans chaque groupe ont pas l'acceptation -1, mais la liste reste du groupe ayant 0 nombre

donc résultat serait comme

group | count 
a  | 1 
b  | 3 
c  | 0 

merci pour l'aide

Répondre

2
SELECT [group], SUM(CASE acceptance WHEN -1 THEN 0 ELSE 1 END) AS [count] 
FROM MyTable 
GROUP BY [group] 
+0

Merci pour la réponse ... – Adyt

1

Count(Col)-t ne compte pas les valeurs NULL. Donc, passez une valeur non nulle où l'acceptation <> -1 (et il sera par défaut de passer nulle pour le cas non traité)

SELECT [group], 
     COUNT(CASE WHEN acceptance <> -1 THEN 1 END) AS [count] 
FROM tbl 
GROUP BY [group]