Maison > base de données > tutoriel mysql > Comment compter les enregistrements en fonction de conditions dans SQL Server sans COUNTIF ?

Comment compter les enregistrements en fonction de conditions dans SQL Server sans COUNTIF ?

Susan Sarandon
Libérer: 2025-01-11 13:02:42
original
759 Les gens l'ont consulté

How to Count Records Based on Conditions in SQL Server Without COUNTIF?

Compter les enregistrements en fonction de la condition dans SQL Server (aucun COUNTIF requis)

Dans l'analyse des données, il est souvent nécessaire de compter les enregistrements en fonction de conditions spécifiques. Bien que SQL Server ne dispose pas de fonction COUNTIF native, il existe d'autres moyens d'obtenir cette fonctionnalité.

L'exemple suivant montre comment calculer le pourcentage d'enregistrements où la valeur MyColumn est 1, tout en regroupant par UID et en filtrant les enregistrements où ContractDollars est supérieur ou égal à 500 000.

Utilisez les instructions SUM et CASE au lieu de COUNTIF

Une façon d'implémenter COUNTIF dans SQL Server consiste à utiliser la fonction SUM en conjonction avec l'instruction CASE pour vérifier les conditions requises :

<code class="language-sql">SELECT UID,
       COUNT(UID) AS TotalRecords,
       SUM(ContractDollars) AS ContractDollars,
       SUM(CASE WHEN MyColumn=1 THEN 1 ELSE 0 END) * 100.0 / COUNT(UID) AS PercentageOf1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000;</code>
Copier après la connexion

Dans cette requête, l'instruction CASE évalue le MyColumn de chaque enregistrement et renvoie 1 si la valeur est 1 et 0 sinon. Ensuite, la fonction SOMME compte le nombre d'enregistrements qui remplissent la condition.

Le pourcentage d'enregistrements avec la valeur souhaitée peut être obtenu en divisant la SOMME de l'expression CASE par le nombre total d'enregistrements (COUNT(UID)) et en multipliant par 100. Notez que 100,0 est utilisé comme nombre à virgule flottante pour participer à l'opération ici afin de garantir que le résultat est un nombre à virgule flottante et d'éviter la perte de précision causée par la division entière.

Autres notes

  • Les valeurs NULL peuvent affecter les résultats. Pour gérer les valeurs NULL, vous pouvez modifier l'instruction CASE en :
<code class="language-sql">SUM(CASE WHEN ISNULL(MyColumn,0)=1 THEN 1 ELSE 0 END)</code>
Copier après la connexion

Cela garantit que les valeurs NULL sont traitées comme 0, ce qui les empêche de fausser les décomptes.

En combinant ces techniques, vous pouvez compter les enregistrements en fonction de conditions spécifiques dans SQL Server, fournissant ainsi des informations précieuses pour l'analyse 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