Heim >Datenbank >MySQL-Tutorial >Wie kann ich Notenprozentsätze in SQL berechnen, ohne alle möglichen Noten vorab zu definieren?

Wie kann ich Notenprozentsätze in SQL berechnen, ohne alle möglichen Noten vorab zu definieren?

DDD
DDDOriginal
2025-01-17 04:06:10173Durchsuche

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

Prozentsatz in einer SQL-Anweisung berechnen

Frage:

Eine SQL Server-Tabelle enthält Benutzer Namen und ihre Noten. Wie kann eine einzelne SQL-Anweisung die Prozentsätze aller möglichen Notenwerte (z. B. A, B, C) berechnen? Ist es darüber hinaus möglich, dies zu erreichen, ohne alle möglichen Noten explizit zu definieren, wenn man bedenkt, dass Benutzer offene Antworten wie „bestanden/nicht bestanden“ oder „keine“ eingeben können?

Antwort:

Option 1: Verwendung von over()

select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade

Diese Lösung ist die effizienteste und nutzt die Funktion over().

Option 2: Universal (Jede SQL-Version)

select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;

Diese Option funktioniert für jede SQL-Version, ist jedoch möglicherweise weniger effizient als der vorherige.

Option 3: Mit CTE (Mindestens Effizient)

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;

Diese Methode bietet zwar eine flexible Lösung, ist aber am wenigsten effizient.

Das obige ist der detaillierte Inhalt vonWie kann ich Notenprozentsätze in SQL berechnen, ohne alle möglichen Noten vorab zu definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn