Comptage conditionnel et clause WHERE dans SQL Server
Dans SQL Server, vous pouvez utiliser la fonction d'agrégation COUNT()
combinée à la clause WHERE
pour compter le nombre d'enregistrements qui répondent à des conditions spécifiques.
Le but de l'exemple suivant est de compter le nombre d'enregistrements où la valeur MyColumn
est égale à 1. Voici la requête modifiée :
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, (SELECT COUNT(*) FROM dbo.AD_CurrentView AS Sub WHERE Sub.UID = Outer.UID AND Sub.MyColumn = 1) * 100.0 / COUNT(UID) AS PercentageOfOne FROM dbo.AD_CurrentView AS Outer GROUP BY UID HAVING SUM(ContractDollars) >= 500000</code>
Ce qui suit est une répartition des étapes de requête :
MyColumn
= 1). UID
pour joindre la requête principale à la sous-requête. MyColumn
est égal à 1 en divisant le nombre dans la sous-requête par le nombre total d'enregistrements pour chaque UID. Notez que le diviseur 100
est remplacé par 100.0
pour garantir une division en virgule flottante et obtenir un résultat en pourcentage plus précis. PercentageOfOne
. Cette requête révisée évite les problèmes potentiels de division d'entiers en utilisant 100.0
au lieu de 100
dans le calcul du pourcentage, garantissant ainsi un résultat en virgule flottante plus précis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!