IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[SQL 2008] Requête : Cumul sur 12 mois glissants


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut [SQL 2008] Requête : Cumul sur 12 mois glissants
    Bonjour,

    Je dois fournir des statistiques (cumul des CV reçus sur l'année et cumul des CV reçus sur 12 mois glissants).

    Voici les données de la table que je dois exploiter (l'historique commence à partir de Juin 2009):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Year  Month  Count
    2009	6	8
    2009	7	117
    2009	8	128
    2009	9	204
    2009	10	208
    2009	11	169
    2009	12	122
    2010	1	159
    2010	2	67
    2010	3	79
    2010	4	66
    2010	5	50
    2010	6	41
    2010	12	16
    2011	1	15
    2011	2	32
    2011	3	100
    2011	4	151
    2011	5	80
    2011	6	75
    2011	7	93
    2011	8	49
    2011	9	55
    2011	10	112
    2011	11	125
    2011	12	250
    Je voudrais obtenir le cumul sur 12 mois glissants avec une requête mais je n'y arrive pas...
    Queqlu'un aurait-il une idée ?

    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Cette requete doit vous donner le cumul sur les 12 derniers mois (mois en cours exclus, soit pour aujourd'hui, de décembre 2009 a novembre 2010 inclus), sinon il faut jouer sur le > ou >=

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT SUM([count])
    FROM MaTable
    WHERE (
    	[year] = YEAR(GETDATE()
    	AND [month] < MONTH(GETDATE())
    	)
    OR	(
    	[year] = YEAR(GETDATE() -1
    	AND [month] >= MONTH(GETDATE())
    )


    Attention cependant au choix du nom de vos colonnes :
    year est un mot reservé
    month est un mot reservé
    count est un mot reservé

    vous avez fait fort
    J'espere que vous n'avez pas appelé votre table STATISTICS

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Merci pour votre requête, j'avais résolu le pb entre temps mais votre requête est plus courte, donc je pense que je vais l'adopter.

    Pour info, ce n'est pas moi qui ai nommé les colonnes ainsi mais un collègue


    Merci

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Il y a un tas de façons de faire, avec des performances très différentes, en fonction des index sur votre tables.

    d'ailleurs je dirai que ma requete sera meilleure ainsi :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT SUM(Somme)
    FROM (
        SELECT SUM([count]) AS Somme
        FROM MaTable
        WHERE (
        	[year] = YEAR(GETDATE()
    	AND [month] < MONTH(GETDATE())
        	)
        UNION ALL
        SELECT SUM([count]) AS Somme
        FROM MaTable
        WHERE(
    	[year] = YEAR(GETDATE() -1
    	AND [month] >= MONTH(GETDATE())
        )
    )

    Je suppose que vous avez un index sur (Year, Month) !?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Oui il y a un index

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cumul sur 12 mois glissants
    Par jerems113 dans le forum Cognos
    Réponses: 7
    Dernier message: 09/12/2010, 09h36
  2. Requête sur 12 mois glissant
    Par sandrasemise dans le forum Webi
    Réponses: 5
    Dernier message: 17/08/2010, 15h42
  3. [SQL SERVER 2008] requête max sur table
    Par mad_martigan dans le forum Développement
    Réponses: 1
    Dernier message: 29/06/2010, 16h31
  4. Réponses: 4
    Dernier message: 12/05/2010, 17h30
  5. Somme cumulative sur 12 mois glissant
    Par Ptij16 dans le forum Deski
    Réponses: 6
    Dernier message: 13/07/2007, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo