Es gibt anscheinend unterschiedliche Meinungen über die Berechnung des Median. Zum einen gibt es den 'financial' Median, der das arithmetische Mittel der beiden mittleren Werte ist, zum anderen den 'statistischen' Median, der der niedrigere (bzw. bei Gleichheit der Werte) der erste der Werte ist. In Büchern über T-SQL findet man die komplexesten Statements zur Berechnung des Median, dabei ist dieser sehr einfach mit Hilfe von TOP n PERCENT zu berechnen. Hier ist ein Beispiel zur Berechnung des 'financial' Medians:
IF OBJECT_ID('median') IS NOT NULL
DROP TABLE median
GO
CREATE TABLE median(
col1 INT
)
GO
INSERT INTO median (col1) VALUES (1)
INSERT INTO median (col1) VALUES (2)
INSERT INTO median (col1) VALUES (3)
INSERT INTO median (col1) VALUES (3)
INSERT INTO median (col1) VALUES (4)
INSERT INTO median (col1) VALUES (7)
INSERT INTO median (col1) VALUES (8)
INSERT INTO median (col1) VALUES (9)
SELECT
((SELECT
MIN(Col1)
FROM
(SELECT TOP 50 PERCENT
Col1
FROM
Median
ORDER BY
Col1
DESC) a) +
(SELECT
MAX(Col1)
FROM
(SELECT TOP 50 PERCENT
Col1
FROM
Median
ORDER BY
Col1) a))/2. AS Median
Median
------------------
3.500000
(1 row(s) affected)
Und hier eines zur Berechnung des 'statistischen' Medians:
SELECT
MAX(Col1) AS Median
FROM
(SELECT TOP 50 PERCENT
Col1
FROM
Median
ORDER BY
Col1) a
Median
-----------
3
(1 row(s) affected)
Beide Varianten funktionieren sowohl für eine gerade als auch ungerade Anzahl von Beoachtungen.
Danke an Jonathan van Houtte.