Calcul du pourcentage dans une instruction SQL
Question :
Une table SQL Server contient un utilisateur noms et leurs notes. Comment une seule instruction SQL peut-elle calculer les pourcentages de toutes les valeurs de note possibles (par exemple, A, B, C) ? De plus, est-il possible d'y parvenir sans définir explicitement toutes les notes possibles, étant donné que les utilisateurs peuvent saisir des réponses ouvertes telles que « réussite/échec » ou « aucune » ?
Réponse :
Option 1 : Utiliser over()
select Grade, count(*) * 100.0 / sum(count(*)) over() from MyTable group by Grade
Cette solution est la plus efficace et utilise la fonction over().
Option 2 : Universel (toute version SQL)
select Grade, count(*) * 100.0 / (select count(*) from MyTable) from MyTable group by Grade;
Cette option fonctionne pour n'importe quelle version de SQL mais peut être moins efficace que le précédent.
Option 3 : Avec CTE (Moins Efficace)
with t(Grade, GradeCount) as ( select Grade, count(*) from MyTable group by Grade ) select Grade, GradeCount * 100.0/(select sum(GradeCount) from t) from t;
Bien que cette méthode fournisse une solution flexible, elle est la moins efficace.
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!