Medianwert mit einer Prozedur berechnen

Medianwert berechnen

Der Medianwert ist ein zentraler Begriff in der Statistik und stellt einen Mittelwert dar, der oft verwendet wird, um die zentrale Tendenz einer Datenmenge zu bestimmen. Er unterscheidet sich von anderen Maßzahlen wie dem arithmetischen Mittel oder dem Modus und hat den Vorteil, dass er weniger empfindlich auf Ausreißer reagiert. Das bedeutet, dass der Median auch dann einen guten Eindruck von einem Datensatz vermitteln kann, wenn einzelne Werte extrem hoch oder niedrig sind und somit das arithmetische Mittel verzerren würden.

In SQL-Server-Umgebungen gibt es keine eingebaute Funktion zur Berechnung des Medians, wie sie beispielsweise in anderen Statistiksoftwarepaketen oder Programmiersprachen vorhanden ist. Um diese Lücke zu schließen, kann eine gespeicherte Prozedur wie CalculateMedianValue erstellt werden, um den Medianwert für beliebige numerische Spalten innerhalb einer gegebenen Tabelle zu berechnen.
CREATE PROCEDURE CalculateMedianValue
    @TableName NVARCHAR(128),
    @ValueFieldName NVARCHAR(128),
    @MedianValue FLOAT OUTPUT
AS
BEGIN
    DECLARE @SQL NVARCHAR(MAX);
    
    SET @SQL = N'
    WITH RankedValues AS (
        SELECT ' + QUOTENAME(@ValueFieldName) + ', 
        ROW_NUMBER() OVER (ORDER BY ' + QUOTENAME(@ValueFieldName) + ') AS RowNum,
        COUNT(*) OVER() AS TotalRows
        FROM ' + QUOTENAME(@TableName) + '
    )
    SELECT @MedianResult = AVG(CAST(' + QUOTENAME(@ValueFieldName) + ' AS FLOAT)) FROM (
        SELECT TOP 2 ' + QUOTENAME(@ValueFieldName) + ' FROM RankedValues
        WHERE RowNum IN (
            (TotalRows + 1) / 2,
            (TotalRows / 2) + 1
        )
        ORDER BY ' + QUOTENAME(@ValueFieldName) + '
    ) AS MedianValues;'
    
    EXEC sp_executesql 
        @SQL, 
        N'@MedianResult FLOAT OUTPUT', 
        @MedianResult = @MedianValue OUTPUT;
END;
GO

Beispiel

Um die Funktion CalculateMedian in einer SQL-Umgebung zu verwenden, könnten Sie folgenden Code ausführen:

DECLARE @Median FLOAT;
EXEC CalculateMedianValue 
    @TableName = N'Mitarbeiter', 
    @ValueFieldName = N'Einkommen',
    @MedianValue = @Median OUTPUT;

PRINT 'Der Median des Einkommens ist: ' + CAST(@Median AS NVARCHAR(30));

In diesem Beispiel würde die Funktion den Medianwert der Spalte Einkommen in der Tabelle Mitarbeiter berechnen und ausgeben.

Diese gespeicherte Prozedur CalculateMedianValue berechnet den Medianwert einer gegebenen Spalte in einer Tabelle in einer SQL Server-Datenbank. Hier ist eine schrittweise Erklärung des Codes:

  1. CREATE PROCEDURE CalculateMedianValue:
    • Es wird eine neue gespeicherte Prozedur mit dem Namen CalculateMedianValue erstellt.
  2. Parameter der Prozedur:
    • @TableName NVARCHAR(128): Der Name der Tabelle, aus der der Median berechnet werden soll.
    • @ValueFieldName NVARCHAR(128): Der Name der Spalte, aus der der Median berechnet werden soll.
    • @MedianValue FLOAT OUTPUT: Ein Ausgabeparameter, der den berechneten Medianwert zurückgibt.
  3. Beginn des Prozedurkörpers:
    • BEGIN ... END: Markiert den Anfang und das Ende des Codes, der innerhalb der Prozedur ausgeführt wird.
  4. Deklaration und Initialisierung der Variablen:
    • DECLARE @SQL NVARCHAR(MAX);: Eine Variable für den dynamischen SQL-Befehl wird deklariert.
  5. Konstruktion des dynamischen SQL-Befehls:
    • SET @SQL = N'...';: Der dynamische SQL-String wird aufgebaut.
  6. Common Table Expression (CTE) RankedValues:
    • WITH RankedValues AS (...): Ein CTE, das verwendet wird, um eine Rangfolge der Werte in der Spalte zu erstellen, zusammen mit der Gesamtanzahl der Zeilen in der Tabelle.
    • ROW_NUMBER() OVER (ORDER BY ' + QUOTENAME(@ValueFieldName) + ') AS RowNum: Erstellt eine nummerierte Liste der Werte in der Spalte, sortiert in aufsteigender Reihenfolge.
    • COUNT(*) OVER() AS TotalRows: Zählt die Gesamtzahl der Zeilen in der Tabelle und macht diese Information in jeder Zeile verfügbar.
  7. Berechnung des Medianwerts:
    • SELECT @MedianResult = AVG(CAST(' + QUOTENAME(@ValueFieldName) + ' AS FLOAT)) FROM (...): Der eigentliche Befehl, der den Medianwert berechnet, indem er den Durchschnitt der mittleren zwei Werte nimmt.
    • SELECT TOP 2 ' + QUOTENAME(@ValueFieldName) + ' FROM RankedValues: Wählt die beiden mittleren Werte aus der Tabelle basierend auf der Rangfolge.
    • WHERE RowNum IN ((TotalRows + 1) / 2, (TotalRows / 2) + 1): Ermittelt die Zeilennummern der zwei Werte, die als Median in Betracht kommen.
  8. Ausführung des dynamischen SQL-Befehls:
    • EXEC sp_executesql @SQL, N'@MedianResult FLOAT OUTPUT', @MedianResult = @MedianValue OUTPUT;: Führt den dynamischen SQL-Befehl aus und gibt das Ergebnis über den Ausgabeparameter zurück.
  9. Abschluss der Prozedur:
    • Nachdem der SQL-Befehl ausgeführt wurde, wird der berechnete Wert im Ausgabeparameter @MedianValue zurückgegeben.
  10. GO:
    • Ein Befehl, der in T-SQL-Skripten verwendet wird, um das Ende eines Batches von Transact-SQL-Anweisungen zu signalisieren.

Bedeutung des Medianwerts

Die Bedeutung des Medianwerts liegt in seiner robusten Aussagekraft über die Mitte einer Datenmenge. Wenn man eine ungerade Anzahl von Werten hat, ist der Median einfach der mittlere Wert, wenn man die Daten der Größe nach ordnet. Bei einer geraden Anzahl von Werten ist der Median der Durchschnitt der beiden mittleren Werte. Der Median teilt eine geordnete Datenmenge in zwei Hälften: 50% der Daten liegen unter und 50% der Daten liegen über dem Median.

Beispiele der Verwendung

  1. Einkommensstatistiken: Der Median des Einkommens gibt den Punkt an, an dem genau die Hälfte der Personen mehr und die andere Hälfte weniger verdient. Dies ist oft aussagekräftiger als das Durchschnittseinkommen, da hohe Einkommen den Durchschnitt stark beeinflussen können, nicht aber den Median.
  2. Immobilienpreise: Ähnlich wie bei Einkommen wird der Medianpreis von verkauften Häusern verwendet, um ein genaueres Bild vom Immobilienmarkt zu geben, da einige wenige sehr teure oder sehr günstige Verkäufe den Durchschnittspreis verzerren könnten.
  3. Bildung: In Prüfungsergebnissen kann der Median dazu verwendet werden, um den typischen Schülerleistungsstand anzugeben, wiederum ohne dass einzelne, sehr hohe oder sehr niedrige Ergebnisse das Bild verzerren.
  4. Medizin: Medianwerte sind wichtig, um das zentrale Outcome in klinischen Studien zu bewerten, beispielsweise bei der Überlebenszeit nach einer Behandlung.

Berechnung des Medianwerts

Die Berechnung des Medianwerts ist unkompliziert:

  1. Ordnen der Daten: Zuerst werden alle Datenwerte in aufsteigender Reihenfolge geordnet.
  2. Bestimmung der Datenmenge: Dann wird die Anzahl der Werte (n) festgestellt.
  3. Berechnung für ungerade n: Wenn n ungerade ist, ist der Median einfach der Wert in der Mitte der geordneten Liste. Bei einer Liste mit 2m + 1 Werten ist der Median der Wert an der Position m + 1.
  4. Berechnung für gerade n: Ist n gerade, gibt es keine einzelne mittlere Zahl, also wird der Median als Durchschnitt der beiden mittleren Zahlen berechnet. Bei einer Liste mit 2m Werten sind das die Werte an den Positionen m und m + 1.

Beispiel:

Nehmen wir an, wir haben die folgenden Daten über das Alter von zehn Personen: 22, 27, 24, 24, 35, 18, 24, 28, 30, 21.

  1. Wir ordnen die Daten: 18, 21, 22, 24, 24, 24, 27, 28, 30, 35.
  2. Wir stellen fest: n = 10, was gerade ist.
  3. Wir finden die mittleren Werte, die an den Positionen 5 und 6 stehen (24 und 24).
  4. Der Median ist der Durchschnitt der beiden, was in diesem Fall 24 ist.

Der Medianwert bietet eine zuverlässige Maßzahl, um die Mitte eines Datensatzes zu verstehen, insbesondere in Situationen, in denen Ausreißer das arithmetische Mittel verfälschen würden. Er ist ein starkes Werkzeug in der deskriptiven Statistik und wird breit gefächert in Wirtschaft, Medizin, Soziologie und vielen anderen Feldern verwendet.

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
About Frank 83 Articles

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Be the first to comment

Leave a Reply

Your email address will not be published.


*