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

Requêtes et SQL. Discussion :

Requête SQL avec Group By par semaine


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Requête SQL avec Group By par semaine
    Soit la requête suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT     FORMAT(L.DATELIVRAISON, 'WW') AS Semaine, P.DESIGNATION, SUM(LV.QTE) AS Quantité, AVG(LV.PRIXALALIVRAISON) AS PU, SUM(LV.QTE * LV.PRIXALALIVRAISON)
                           AS Montant
    FROM         LIGNELIVRAISON LV, PRODUITS P, LIVRAISON L
    WHERE     LV.NUMPRODUIT = P.NUMPRODUIT AND LV.NUMLIVRAISON = L.NUMLIVRAISON AND (L.DATELIVRAISON BETWEEN FORMAT(?, 'dd/MM/yyyy') AND FORMAT(?, 
                          'dd/MM/yyyy'))
    GROUP BY FORMAT(L.DATELIVRAISON, 'WW'), P.DESIGNATION

    Cette requête me donne l'état des ventes par N° Semaine sur une période donnée.

    Mon problème: Au lieu d'avoir le N° de la semaine; qu'il me donne (Group By) la date de debut et de fin de cette semaine (actuellement, je vais le group by sur le N° semaine).

    Par exemple, si l'utilisateur choisit la période du 01/02/2013 au 28/02/2013, voila l'affichage que j'ai:

    Semaine DESIGNATION QUANTITE MONTANT

    5 XX 12 25000
    5 YY 07 73000
    6 XX 28 68200
    7 XX 15 30000
    7 YY 14 146000
    8 XX 06 12500
    8 YY 07 73000
    8 ZZ 05 75000
    9 XX 18 27500
    9 YY 21 219000
    9 ZZ 10 150000

    Et voilà le resultat que je souhaite avoir


    Semaine DESIGNATION QUANTITE MONTANT

    01/02/2013 - 03/02/2013 XX 12 25000
    01/02/2013 - 03/02/2013 YY 07 73000
    04/02/2013 - 10/02/2013 XX 28 68200
    11/02/2013 - 17/02/2013 XX 15 30000
    11/02/2013 - 17/02/2013 YY 14 146000
    18/02/2013 - 24/02/2013 XX 06 12500
    18/02/2013 - 24/02/2013 YY 07 73000
    18/02/2013 - 24/02/2013 ZZ 05 75000
    25/02/2013 - 28/02/2013 XX 18 27500
    25/02/2013 - 28/02/2013 YY 21 219000
    25/02/2013 - 28/02/2013 ZZ 10 150000



  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Solution simple et brutale : une table de correspondance entre le numéro de semaine et le début et la fin de la semaine. À initialser en début d'année.

    Strucuture :
    Annee
    NumeroSemaine
    DateDebutSemaine
    DateFinSemaine

    Autre solution un peu plus subtile, 2 fonctions
    1. qui prend l'année et la semaine et qui calcule le début et la fin.
    2. qui prend un lundi et qui calcule le dimanche correspondant


    Un algo possible pour trouver le lundi de la semaine :

    récupérer la date du 1er janvier de l'année en paramètre
    1. trouver le 1er lundi de l'année
    2. regarder le numéro de semaine
    3. si le numéro de semaine est égal à la semaine en paramètre
    4. donner la date du lundi en résultat
    5. sinon passer au lundi suivant tant que ce lundi est dans l'année


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [2008] Requête SQL avec GROUP BY
    Par thierry007 dans le forum Développement
    Réponses: 5
    Dernier message: 02/12/2013, 10h07
  2. [SQL] Requête SQL avec 3 tables liées par la même relation
    Par lenstoi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/08/2007, 23h32
  3. [Requête/SQL] réaliser des stats par semaine
    Par nikobell dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/05/2007, 15h01
  4. Requête SQL avec UNION, sum et GROUP BY
    Par Guitariff dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/12/2006, 13h48
  5. Requête récalcitrante avec un tri par COUNT sans GROUP BY
    Par Ancalagon77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2006, 14h27

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