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

SQL Oracle Discussion :

Requete Chiffe d'affaire avec N-1


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Requete Chiffe d'affaire avec N-1
    Bonjour,

    j'ai une requête qui me permet de sortir le Chiffre d’affaire de mes boutiques à la journée, j’aimerai y ajouter le chiffre de l’année dernière mais cela me fausse mes chiffres

    voici la requête qui renvoi le Ca journalier qui fonctionne :

    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
    18
    19
    20
    21
    22
     
    Select
    b.Boutique,
    b.date,
    b. somme .quantité_vendu, 
    b.somme_total_ventes_ht
    b.somme_total_ventes_TTC
    from ( 
    select
    Boutique,
    date,
    quantité_vendu, 
    article
    prix_vendu_ht
    prix_vendu _ttc
    where 
    and day(date)=day(now)
    and month(date)=month(now)
    and year(date)=year(now)
    ) b
    Group by b.date, b.Boutique
    Order by  b.date

    par contre j'essaie de récupérer le Chiffre d'affaire jour avec comparaison à la même date de l’année dernière, cela fausse complétement le résultats :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Select
    b.Boutique,
    b.date,
    b. somme .quantité_vendu as QTE , 
    b.somme_total_ventes_ht as CA,
    b.somme_total_ventes_TTC as CA TTC ,
    c. somme .quantité_vendu as QTE N1, 
    c.somme_total_ventes_ht as CA HT N1
    c.somme_total_ventes_TTC AS CA TTC N1
    from ( 
    select
    Boutique,
    date,
    quantité_vendu, 
    article
    prix_vendu_ht
    prix_vendu _ttc
    where 
     
    and day(date)=day(now)
    and month(date)=month(now)
    and year(date)=year(now)
     
    ) b
    ,
    (
    select
    Boutique,
    date,
    quantité_vendu, 
    article
    prix_vendu_ht
    prix_vendu _ttc
    where 
     
    and day(date)=day(now)
    and month(date)=month(now)
    and year(date)=year(now) -1
     
    ) c
     
    Group by b.date, b.Boutique,c.date,b.boutique
    Order by  b.date, c.date

    Au niveau des quantités j'ai l'impression que c'est multiplié par 10 et les ca sont faux ...je ne comprends pas pourquoi

    je suis sur que je dois faire une erreur de débutant ,

    si quelqu'un voit quelque chose svp ?

    Et surtout chose encore plus compliqué, c'est de pouvoir comparer les jours comparables ( vente du lundi comparer avec le même lundi de l'année dernière et ainsi de suite )

    Merci bcps,


    Merci bcps

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Parce que tu fais une jointure entre tes tables b et c sans condition where

    Ce qu'il faudrait faire : 1 ligne pour N avec les données dans des colonnes, 1 ligne pour N1 avec des données dans d'autres colonnes et regrouper les 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select boutique, sum(qte_N), sum(HT_N), sum(Qte_N1), sum(HT_N1)
    FROM 
    (select boutique, sum(qte_vendu) qte_N, sum(total_ht) HT_N, 0 qte_N1, 0 HT_N1
    FROM .. WHERE année = N
    union ALL
    select boutique, 0 qte_N, 0 HT_N, sum(qte_vendu) qte_N1, sum(total_ht) HT_N1
    FROM .. WHERE année = N - 1
    )
    GROUP BY boutique
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select date_vente, boutique, sum(quantite_j) as total_jour, sum(quantite_j_365) as total_1an
    from  
    ( 
        select trunc(date_vente) as date_vente, boutique, quantite as quantite_j, 0 as quantite_j_365 from data where trunc(date_vente) = trunc(sysdate) 
        union all
        select trunc(sysdate), boutique, 0 as quantite_j, quantite as quantite_j_365 from data where trunc(date_vente) = trunc(sysdate)-365 
    ) 
    where date_vente = trunc(sysdate)
    group by date_vente, boutique ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select date_vente, boutique, sum(quantite_j) as total_jour, sum(quantite_j_365) as total_1an
    from (
    select boutique, case when trunc(date_vente) = trunc(sysdate)-365 then trunc(sysdate) else trunc(date_vente) end as date_vente, 
        case when trunc(date_vente) = trunc(sysdate)  then quantite else 0 end as quantite_j,
        case when trunc(date_vente) = trunc(sysdate)-365  then quantite else 0 end as quantite_j_365 from data
    where date_vente in( trunc(sysdate),  trunc(sysdate)-365)
    )
    group by date_vente, boutique ;

  4. #4
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select date_vente, boutique, sum(quantite_j) as total_jour, sum(quantite_j_365) as total_1an
    from  
    ( 
        select trunc(date_vente) as date_vente, boutique, quantite as quantite_j, 0 as quantite_j_365 from data where trunc(date_vente) = trunc(sysdate) 
        union all
        select trunc(sysdate), boutique, 0 as quantite_j, quantite as quantite_j_365 from data where trunc(date_vente) = trunc(sysdate)-365 
    ) 
    where date_vente = trunc(sysdate)
    group by date_vente, boutique ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select date_vente, boutique, sum(quantite_j) as total_jour, sum(quantite_j_365) as total_1an
    from (
    select boutique, case when trunc(date_vente) = trunc(sysdate)-365 then trunc(sysdate) else trunc(date_vente) end as date_vente, 
        case when trunc(date_vente) = trunc(sysdate)  then quantite else 0 end as quantite_j,
        case when trunc(date_vente) = trunc(sysdate)-365  then quantite else 0 end as quantite_j_365 from data
    where date_vente in( trunc(sysdate),  trunc(sysdate)-365)
    )
    group by date_vente, boutique ;
    Génial , ça fonctionne nickel, dsl de n'avoir pas testé plus tot

    Merci

  5. #5
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Ou l'art de répondre à la résolution de sa question N-1

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

Discussions similaires

  1. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  2. Requete imbriqué sous delphi avec SGBD oracle accepté ?
    Par EssaiEncore dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/09/2005, 09h55
  3. [super requete] Dumper un model avec une clause where
    Par elievar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2005, 17h05
  4. [C#] Requête MS Access (Problème avec Date)
    Par Erakis dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/02/2005, 22h54
  5. Requete un peu complexe avec la fonction IN
    Par Taichin dans le forum Oracle
    Réponses: 27
    Dernier message: 10/11/2004, 08h59

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