Maison >base de données >tutoriel mysql >Comment calculer les pourcentages de valeurs dans une table SQL Server ?

Comment calculer les pourcentages de valeurs dans une table SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-17 04:16:13356parcourir

How to Calculate Percentages of Values in a SQL Server Table?

Calculs de pourcentage SQL Server : trois approches

Ce guide présente trois méthodes efficaces pour calculer les pourcentages de valeurs dans une table SQL Server. Chaque méthode permet d'obtenir le même résultat, offrant une flexibilité en fonction de vos préférences et de la structure de la base de données.

Méthode 1 : Efficacité de la fonction de fenêtre

Cette approche exploite la fonction de fenêtre OVER() pour une solution concise et efficace :

<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() AS Percentage
FROM MyTable
GROUP BY Grade;</code>

La clause OVER() calcule le nombre total sur toutes les lignes, fournissant une base directe pour le calcul du pourcentage.

Méthode 2 : Approche universelle

Une méthode plus simple, adaptée à différents dialectes SQL, implique une sous-requête :

<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM MyTable) AS Percentage
FROM MyTable
GROUP BY Grade;</code>

Cela divise directement le nombre de chaque note par le nombre total de lignes obtenu à partir de la sous-requête.

Méthode 3 : Expression de table commune (CTE)

Pour une meilleure lisibilité et modularité, un CTE peut être utilisé :

<code class="language-sql">WITH GradeCounts AS (
    SELECT Grade, COUNT(*) AS GradeCount
    FROM MyTable
    GROUP BY Grade
)
SELECT Grade, GradeCount * 100.0 / (SELECT SUM(GradeCount) FROM GradeCounts) AS Percentage
FROM GradeCounts;</code>

Le CTE calcule d'abord le décompte pour chaque note, puis la requête principale calcule le pourcentage en utilisant le décompte total dérivé du CTE.

Les trois méthodes donnent le même format de sortie :

<code>Grade | Percentage
------------------
A      | 5%
B      | 15%
C      | 40%
D      | 40%</code>

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!

Déclaration:
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