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
Libérer: 2025-01-17 04:06:10
original
170 Les gens l'ont consulté

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
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal