Je construis une requête avec une clause GROUP BY
qui a besoin de la capacité de compter les enregistrements en fonction seulement sur une certaine condition (par exemple ne comptabilisent que les enregistrements dans lesquels une certaine valeur de la colonne est égale à 1).Sql Server équivalent d'une fonction d'agrégation COUNTIF
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1)/COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
La ligne COUNTIF()
échoue évidemment car il n'y a pas de fonction SQL natif appelé COUNTIF
, mais l'idée est ici de déterminer le pourcentage de toutes les lignes qui ont la valeur « 1 » pour MaColonne. Avez-vous des idées sur la façon de l'implémenter correctement dans un environnement MS SQL 2005?
(Je sais que l'OP a posé des questions sur MS SQL, mais juste un petit commentaire pour les utilisateurs de SQLite) SQLite n'a pas de 'ISNULL', vous pouvez faire' CASE WHEN myColumn IS NULL' ou utiliser 'ifnull' (https://stackoverflow.com/a/799406/1861346) – Matt