lundi 9 janvier 2012

Fonctions analytiques de SQL Server 2012

Ces fonctions sont des extensions des fonctions de ranking de SQL Server 2008, on va donc retrouver la même syntaxe globale.

Voici les données utilisées pour ce script :

image

image

Totalement normalisées donc … mais va pour cette démonstration.

 

Valeur suivante dans le dataset :

LEAD ( Valeur [ ,PasASauter ] , [ DefautSiNull ] )   OVER ( [ ClauseDePartitionnement ] )

Cette fonction servira à faire des comparaisons par exemple :

image

image

Sympa d’avoir pensé aux valeurs par défaut si NULL : cela facilitera les reports…

Valeur précédente dans le dataset :

LAG  ( Valeur [ ,PasASauter ] , [ DefautSiNull ] )    OVER ( [ ClauseDePartitionnement ] )

Symétriques de la précédente :

image

image

 

Première valeur dans un dataset

FIRST_VALUE ( [Valeur )     OVER ( [  ClauseDePartitionnement ] ClauseDeTri  )

La fonction fisrt_value va nous permettre de trouver la colonne dont la valeur est la 1èere et ceci pour tout le dataset ou en le partitionnant.

image

Donne l’année la plus faible de tous les vendeurs :

image

Et cette requête :

image

l’année la plus faible de chaque vendeur

 image

 

Dernière valeur dans un dataset

LAST_VALUE ( [Valeur )
    OVER ( [ Partition ] ClauseDeTri )

Cette fonction est symétrique de la précédente.

Partie de cumul de dataset

CUME_DIST( ) OVER ( [Partition ] ClauseDeTri )

image

image

La meilleure vente de tous les temps a été Paul en 2011 ce qui explique son score de 1 = 100 %

image

 image

Nous donne cette fois la part de la meilleure année de chaque vendeur.

 

Conclusion

Tous ceux qui ont des reports à produire ou des grilles APS.Net apprécieront ces fonctions qui éviteront de faire les calculs en aval de la base.

0 commentaires:

Enregistrer un commentaire