Effiziente Berechnung von Notenprozentsätzen aus unstrukturierten Daten mit SQL
Das Speichern von Noten als Freitext in einer Datenbank stellt bei der Berechnung der prozentualen Notenverteilungen eine Herausforderung dar. Dieser Artikel bietet SQL-Lösungen zur Berechnung dieser Prozentsätze für alle Noten, auch ohne vordefinierte Notenwerte.
SQL-Abfrage zur Prozentberechnung
Diese SQL-Abfrage nutzt die Funktion over()
für eine effiziente Prozentberechnung über eindeutige Notenwerte:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER () FROM MyTable GROUP BY Grade;</code>
Die Funktion over()
berechnet die Gesamtzeilenanzahl in der gesamten Tabelle und ermöglicht so eine Prozentberechnung, ohne dass alle möglichen Noten angegeben werden müssen.
Alternative SQL-Abfrage (für Datenbanken ohne over()
Funktion)
Für Datenbanken, denen die Funktion over()
fehlt, verwendet diese alternative Abfrage eine Unterabfrage:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM MyTable) FROM MyTable GROUP BY Grade;</code>
Dieser Ansatz verwendet eine Unterabfrage, um die Gesamtanzahl der Zeilen zu ermitteln, und berechnet dann die Prozentsätze.
Wichtiger Hinweis: Diese Lösungen berechnen Prozentsätze genau, wenn Notendaten als Einzelzeichenwerte gespeichert werden (z. B. „A“, „B“, „C“). Komplexere Notenformate in unstrukturiertem Text erfordern eine Vorverarbeitung, um die Notenwerte zu extrahieren, bevor diese SQL-Abfragen angewendet werden.
Das obige ist der detaillierte Inhalt vonWie kann SQL prozentuale Notenverteilungen aus unstrukturierten Textdaten berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!