Heim >Datenbank >MySQL-Tutorial >Wie kann ich Notenprozentsätze in SQL dynamisch berechnen?

Wie kann ich Notenprozentsätze in SQL dynamisch berechnen?

Susan Sarandon
Susan SarandonOriginal
2025-01-17 04:12:09959Durchsuche

How Can I Dynamically Calculate Grade Percentages in SQL?

SQL dynamische Prozentberechnung: effizient und umfassend

Frage:

Anhand einer SQL-Tabelle mit Benutzernamen und Noten müssen Sie den Prozentsatz des Auftretens jeder möglichen Note berechnen. Die Herausforderung besteht darin, dies dynamisch umzusetzen und eine Reaktionsfähigkeit aus jedem offenen Textfeld zu ermöglichen.

Lösung:

Es gibt drei Hauptmethoden, SQL-Anweisungen zur Berechnung von Prozentsätzen zu verwenden:

Methode 1: Effizienzoptimierung

<code class="language-sql">select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade</code>

Diese Methode ist die effizienteste, da sie die Funktion „over()“ verwendet, um den Prozentsatz basierend auf dem gesamten Datensatz zu berechnen.

Methode 2: Universelle Anwendbarkeit

<code class="language-sql">select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;</code>

Diese Methode funktioniert mit jeder SQL-Version, unabhängig davon, ob sie die Funktion „over()“ unterstützt. Es berechnet den Prozentsatz basierend auf der Gesamtzahl der Zeilen in der Tabelle.

Methode 3: Common Table Expression (CTE)

<code class="language-sql">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;</code>

Diese Methode ist weniger effizient als die beiden vorherigen, kann aber bei komplexeren Berechnungen nützlicher sein. Es nutzt den CTE, um Notenzahlen und Prozentsätze unabhängig zu berechnen.

Das obige ist der detaillierte Inhalt vonWie kann ich Notenprozentsätze in SQL dynamisch berechnen?. 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