Maison > base de données > tutoriel mysql > Comment effectuer un comptage conditionnel dans SQL Server sans COUNTIF ?

Comment effectuer un comptage conditionnel dans SQL Server sans COUNTIF ?

Mary-Kate Olsen
Libérer: 2025-01-11 12:56:47
original
790 Les gens l'ont consulté

How to Perform Conditional Counting in SQL Server Without COUNTIF?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal