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 :

regroupement par trimestre


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Par défaut regroupement par trimestre
    Bonjour à tous,

    j'ai une table contenant par client le nombre d'articles vendus et le montant par date. je suis sous sql server 2008 R2?
    Je voudrais simplement faire une requête qui me donne par client et article la somme des quantités et du montant par trimestre.

    Je vois partout sur le net qu'il existe une fonction QUARTER(date) qui est censée me donner le numéro de trimestre. J'essaye donc de l'utiliser pour faire mes Sum et mon group by mais mon sql me dit que ce n'est pas une fonction sql intégrée ?

    Sinon, comment puis je faire ma requête ? suis je obligé de faire un : case when month(date) = 1 then 1 when month(date) = 2 then 1 etc ... ou puis faire plus simplement ?

    Merci de vos réponses.

  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
    Par défaut
    Bonjour

    peux tu poster la requete que tu as faite ?

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT [CODE_CLIENT], [NOM_CLIENT], [CODE_PRODUIT], [LIBELLE_PRODUIT],
           QUARTER(DATE) AS TRIMESTRE, SUM(MONTANT) as MONTANT, SUM(QUANTITE) AS QUANTITE
     
    FROM   [dbo].[VENTE] 
     
    WHERE  YEAR(DATE) = '2010' 
     
    GROUP BY [CODE_CLIENT], [NOM_CLIENT], [CODE_PRODUIT], [LIBELLE_PRODUIT], QUARTER(DATE)

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Supposons que votre table soit structurée de cette façon : client_id nb_articles date.

    La requête est alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT	client_id
    	, SUM(nb_articles_vendus) AS total_articles_vendus
    	, DATEPART(quarter, date) AS trimestre
    FROM	dbo.maTable
    WHERE	date BETWEEN '20100101' AND '20101231'
    GROUP	BY client_id, DATEPART(quarter, date)
    Notez que vous pouvez la rentre plus rapide en spécifiant une colonne calculée qui extrait automatiquement le trimestre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.maTable
    ADD trimestre AS (DATEPART(quarter, date)) PERSISTED NOT NULL
    Vous pouvez ensuite créer un index sur cette colonne pour couvrir votre requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE INDEX IXNCmaTable_trimestre
    ON maTable(client_id, nb_articles_vendus, trimestre)
    @++

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Par défaut
    super ! merci et bonne journée.

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

Discussions similaires

  1. Regroupement par quinzaine (1->15,16->31)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/01/2006, 12h16
  2. [Requête] Regroupement par mois en cours
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/01/2006, 09h36
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 17h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

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