Maison >base de données >tutoriel mysql >Comment puis-je calculer les pourcentages de notes en SQL sans prédéfinir toutes les notes possibles ?

Comment puis-je calculer les pourcentages de notes en SQL sans prédéfinir toutes les notes possibles ?

DDD
DDDoriginal
2025-01-17 04:06:10172parcourir

How Can I Calculate Grade Percentages in SQL Without Predefining All Possible Grades?

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!

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