Hallo!
> > Median ist keine Aggregat-Funktion. Median geh�rt zu den
> > Analysis-Services... Check die Doku - das sql server books
> > online... Ist
> > beim sql server dabei... Bzw. Auf der CD..
> Da habe ich leider nicht so viel gefunden.
Da gibt es ein ganzes Kapitel zu den Analysis Services. ;-)
Letztendlich d�rften die Analysis Services die schnellste und
effizienteste L�sung sein. Eine Userdefined Function ist da ziemlich
aufwendig, vor allem wenn die Funktion tats�chlich zur Aggregation der
Daten verwendet werden soll.
> > Um ein Median zu simulieren k�nntest Du sowas machen(ungetestet):
> > Select top 1 t1.spalte
> > from tabelle t1 inner join tabelle t2 on t2.spalte<t1.spalte
> > Group by t1.spalte
> > Having count(t2.spalte)=(select ceiling(count(*)/2) from tabelle)
Einen fast genauen Median erh�ltst Du ziemlich schnell mit:
SELECT MAX(Spalte)
FROM (SELECT TOP 50% Spalte
FROM Tabelle
ORDER BY Spalte ASC)
Statt:
SELECT Spalte1, MEDIAN(Spalte2)
FROM Tabelle
GROUP BY Spalte1
Kannst Du dann so selektieren:
SELECT Spalte1, (SELECT MAX(Spalte2)
FROM (SELECT TOP 50% Spalte2
FROM Tabelle AS B
WHERE B.Spalte1 = A.Spalte1
ORDER BY Spalte2 ASC))
FROM (SELECT DISTINCT Spalte1
FROM Tabelle
ORDER BY Spalte1) AS A
Aber das gibt Dir nur eine "Gr��enordnung" des Median und abh�ngig von
den Werten, kann der gefundene Wert auch ganz erheblich vom echten
Median abweichen. In den F�llen ist der echte Median aber auch nicht
aussagekr�ftiger als der simulierte Median.
Ohne Analysis Services kommst Du f�r den echten Median um eine Stored
Procedure oder Userdefined Function nicht herum. Da w�rde ich dann eher
eine anwendungsbezogene und keine allgemeine Funktion schreiben und ggf.
die Ergebnisse in eine Zwischentabelle schreiben.
Freundliche Gr��e
Joachim van de Bruck
_______________________________________________
Database.asp mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/database.asp