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!