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

Langage SQL Discussion :

Query récursive valeurs accumulées


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut Query récursive valeurs accumulées
    Bonjour,

    J’ai une vue suivante qui me donne les ventes par jour et par vendeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ventes(ID, nom, prénom, nombre_article_vendu, ventes_cummulées, date) :
    1, Dupong, Jean, 10, 2500, 2018-11-01
    2, Durand, Pierre, 15, 1800, 2018-11-01
    3, Dujardin, François, 8, 2100, 2018-11-01
    1, Dupong, Jean, 7, 500, 2018-11-02
    2, Durand, Pierre, 26, 2600, 2018-11-02
    3, Dujardin, François, 13, 2900, 2018-11-02
    je voudrais avoir une query qui me permet de savoir quel est le premier vendeur qui a atteint la somme des ventes cummulées au moins égale à 10000, une fois ce vendeur trouvé la query doit s’arrêter et indiquer ce vendeur, la somme des ventes cummulées et la date à laquelle cette somme cumulée est atteinte comme par exemple le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    3, Dujardin, François, 11785, 2018-11-17
    Dans cet exemple, 11785 est obtenu en faisant la somme des ventes cummulées pour l'ID 3, du 2018-11-01 au 2018-11-17, et la query s'est arrêtée au 2018-11-17 car la somme des ventes cumulées a au moins atteint 10000.

    il peut y avoir plusieurs vendeurs ayant atteint cette somme minimum le même jour.

    Comment pourrais-je procéder pour cela ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quel est votre SGBD ?

    Citation Envoyé par mafont99 Voir le message
    il peut y avoir plusieurs vendeurs ayant atteint cette somme minimum le même jour.
    Comment pourrais-je procéder pour cela ?
    C'est une règle fonctionnelle, c'est à votre demandeur de définir ce qu'il veut.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut
    Le SGBD est sous Oracle, mais ici nous considérerons uniquement la partie sql pour écrire la requête, pas de pl/sql.

    Prenons cela comme un concours pour récompenser le ou les vendeurs ayant atteint en premier(s) la somme des ventes cumulées égale à au moins 10000 après clôture du jour.
    La requête sql doit pouvoir boucler sur elle-même et à chaque fois additionner les ventes cumulés jusqu'à au moins atteindre 10000 et s'arrêter une fois cette somme minimum atteinte et imprimer les vendeurs, la somme des ventes cumulées et la date où ces ventes cumulées ont au moins atteint 10000, comme par exemple le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1, Dupong, Jean, 10020, 2018-11-17
    3, Dujardin, François, 11785, 2018-11-17

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez comme ceci :
    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
    with cte_cumul as
    (
    select ID, nom, prénom, nombre_article_vendu, ventes_cummulées, date
         , sum(ventes_cummulées) over(partition by ID order by date asc) as ventes_cummulées_c
      from ventes
    )
      ,  cte_rank as
    (
    select ID, nom, prénom, nombre_article_vendu, ventes_cummulées, date
         , rank () over(order by date asc) as rk
      from cte_cumul
     where ventes_cummulées_c >= 10000
    )
    select ID, nom, prénom, nombre_article_vendu, ventes_cummulées, date
      from cte_rank
     where rk = 1;
    La question concernant le SGBD est nécessaire car le niveau d'implémentation du SQL est différent d'un éditeur à l'autre et d'une version à l'autre.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut
    Superbe ! Merci

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

Discussions similaires

  1. Query Begin et Commit son sur un bateau....
    Par faoz75 dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/08/2003, 11h48
  2. Je ne retrouve pas ma SP dans Query analyser
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/07/2003, 12h43
  3. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  4. [XMLRAD] Décoder Request.Query
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 8
    Dernier message: 10/01/2003, 16h40
  5. Procédure Récursives
    Par DocCoinCoin dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 30/10/2002, 19h27

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