SQL Server 2012 - Analytische Funktionen
Mit dem neuen SQL Server 2012 werden auch einige neue analytische Funktionen eingefügt, die in Oracle teilweise schon seit Jahren bekannt sind. Zu diesen neuen Funktionen gehören:
CUME_DIST
PERCENT_RANK
FIRST_VALUE
LAST_VALUE
PERCENTILE_CONT
PERCENTILE_DISC
LEAD
LAG
Auf die beiden letzten Funktionen möchte ich noch etwas näher eingehen, da ich diese in Auswertungen für besonders wertvoll erachte.
Mit den beiden neuen analytischen Funktionen LEAD und LAG ist es nun ein leichtes Zeiträume miteinander zu vergleichen. Dies war vorher nur mit einiger Mühe und Self-Joins zu erreichen. Als Beispieldatenbank dient hierbei die AdventureWorks2008R2 Datenbank.
Mit der LAG Funktion, kann man den aktuellen Zeitraum mit einem früheren Zeitraum vergleichen. Es werden also vorhergehende Zeilen in eine nachfolgende Betrachtung mit einbezogen. Hierzu folgendes Beispiel:
USE [AdventureWorks2008R2] GO SELECT YEAR(QuotaDate) AS Verkaufsjahr , LAG(sum(SalesQuota)) OVER (ORDER BY YEAR(QuotaDate)) AS Vorjahresumsatz , sum(SalesQuota) AS Jahresumsatz , (sum(SalesQuota) - LAG(sum(SalesQuota), 1,0) OVER (ORDER BY YEAR(QuotaDate))) AS Differenz FROM Sales.SalesPersonQuotaHistory GROUP BY YEAR(QuotaDate) GOMan erhält somit folgendes Ergebnis: Die LEAD Funktion arbeitet im Gegenzug zur LAG Funktion genau anders herum. Zu einem bestimmten Zeitraum kann ein nachfolgender Zeitraum betrachtet werden. Hierzu werden nachfolgende Zeilen in die Betrachtung mit einbezogen. Folgendes Beispiel soll dies verdeutlichen:
USE [AdventureWorks2008R2] GO SELECT YEAR(QuotaDate) AS Verkaufsjahr , sum(SalesQuota) AS Jahresumsatz , LEAD(sum(SalesQuota)) OVER (ORDER BY YEAR(QuotaDate)) AS Folgejahresumsatz , (sum(SalesQuota) - LAG(sum(SalesQuota), 1,0) OVER (ORDER BY YEAR(QuotaDate))) AS Differenz FROM Sales.SalesPersonQuotaHistory GROUP BY YEAR(QuotaDate) GOAls Ergebnis bekommt man nun dieses Resultat. Ich denke, diese neuen Funktionen, sind nicht nur für Controller sehr wertvoll.
Print article | This entry was posted by Falk Krahl on 28.02.12 at 08:38:00 . Follow any responses to this post through RSS 2.0. |