Hierarchische Gruppierungen mit Rank()

Wie ermittelt man die Torschützenkönige der Bundesliga aus einer Liste aller Torschützen der jeweiligen Saison ?

Das Ganze wäre prinzipiell mit Hilfe einiger Subqueries machbar.

Optimaler läßt sich das Ganze mit Hilfe der Funktion Rank() lösen die ab SQL-Server 2005 zur Verfügung steht.

SELECT
	Spieler,
	Verein,
	Tore,
	Saison,
	RANK() OVER (PARTITION BY Saison ORDER BY Tore DESC) AS Platz
FROM
	#ErzielteTreffer

SELECT Spieler,Verein,Tore,Saison FROM
	(
	SELECT
		Spieler,
		Verein,
		Tore,
		Saison,
		RANK() OVER (PARTITION BY Saison ORDER BY Tore DESC) AS Platz
	FROM
	#ErzielteTreffer
	) AS Rangfolge
WHERE Platz = 1

Tags:

Comments are closed.