Comptage conditionnel SQL Server : une approche basée sur CAS
Les fonctions d'agrégation sont essentielles pour l'analyse des données dans SQL Server. Alors que COUNT
fournit un nombre total de lignes, le comptage conditionnel nécessite une stratégie différente. SQL Server n'a pas d'équivalent direct COUNTIF
, mais nous pouvons obtenir le même résultat en utilisant SUM
et CASE
.
Imaginez devoir calculer le pourcentage de lignes où MyColumn
est égal à « 1 ». Une tentative naïve pourrait ressembler à ceci :
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, (COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Incorrect: COUNTIF not supported FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000</code>
La fonction COUNTIF
n'est pas une fonction SQL Server standard. La solution réside dans la mise à profit de SUM
et CASE
:
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, (SUM(CASE WHEN MyColumn = 1 THEN 1 ELSE 0 END) / COUNT(UID) * 100) -- Correct conditional count FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000</code>
L'instruction CASE
vérifie le MyColumn
de chaque ligne. Si c'est « 1 », il renvoie 1 ; sinon, il renvoie 0. SUM
totalise ensuite ces 1 et 0, comptant ainsi les occurrences de « 1 » dans MyColumn
. Cela fournit un décompte conditionnel précis, permettant des calculs précis et une analyse perspicace des données.
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!