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 :

Problème requête [12c]


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Problème requête
    Bonjour ,

    je voudrait faire une extraction sur oracle :

    Le nombre total d'article en prenant en compte les subdivisions suivantes :
    ◾nombre d'article dont le montant est < à 1000.000
    ◾nombre d'article dont le montant est compris entre 1000€ et < 5000€
    ◾nombre d'article dont le montant est compris entre 5000€ et < 10000€
    ◾nombre d'article dont le montant est compris entre 10000€ et < 20000€
    ◾nombre d'article dont le montant est égale à 30.000e ou plus

    Avez vous des idées ? si oui comment je doit procéder svp et merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Montre nous la ou les requêtes que tu as déjà essayées en précisant les problèmes que tu rencontres (messages d'erreur, résultats invalides...)
    Nous pourrons t'aider à la mettre au point.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    merci pour votre intérêt : ci joint ma requête qui prend beaucoup de temps et ne retourne rien , (pas de msg d'erreur)

    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
    with a as (
     
    ----------------pour recupere le num_produit et le montant jointure entre 3 table -------------------
    select hrc.num_produit,mvt.montant
     
    from d_mouvement mvt
    left  join d_contrat  on ctr.num_surcpte=mvt.num_compte
    left  join role_contrat  on hrc.cod_produit=ctr.cod_produit and hrc.num_contrat=ctr.num_contrat
     
     
    )
     
    select
    num_produit,
     
    case when montant >10000 then (select count(*) from a group by num_produit ) else null end as "Superieur_a_10000",
    case when montant >=10000 and montant <=15000  then (select count(*) from a group by num_produit ) else null end as "Superieur_a_10",
    case when montant >15000 and montant <=20000 then (select count(*) from a  group by num_produit) else null end as "Entre_15_20",
    case when montant >20000 and montant <=30000 then (select count(*) from a  group by num_produit) else null end as "Entre_20_30",
    case when montant >30000  then (select count(*) from a group by num_produit ) else null end as "Superieur_a_30"
     
    from a ;

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Merci de ne pas éditez (trop) votre code entre la requête et le forum, car là elle est syntaxiquement invalide.
    De même, entre votre énoncé et votre code ça ne colle pas.

    Sinon vous n'êtes pas trop loin.
    Vous n'avez pas besoin de refaire un comptage à l'intérieur de vos case, car vous êtes déjà sur la table en train d'évaluer les conditions.

    Il suffit de les encadrer par un comptage :
    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
    with cte_produit_montant as
    (
        select hrc.num_produit
             , mvt.montant
          from d_mouvement  mvt
     left join d_contrat    ctr  on ctr.num_surcpte = mvt.num_compte
     left join role_contrat hrc  on hrc.cod_produit = ctr.cod_produit
                                and hrc.num_contrat = ctr.num_contrat
    )
    select count(case when                      montant <  1000 then 1 end) as "Inferieur_a_1000"
         , count(case when montant >=  1000 and montant <  5000 then 1 end) as "Entre_1000_et_5000"
         , count(case when montant >=  5000 and montant < 10000 then 1 end) as "Entre_5000_et_10000"
         , count(case when montant >= 10000 and montant < 20000 then 1 end) as "Entre_10000_et_20000"
         , count(case when montant >= 20000                     then 1 end) as "Superieur_a_20000"
      from cte_produit_montant;

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    ça marche mnt merci infiniment pour l'aide

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

Discussions similaires

  1. Problème: Requête utilisant NOT IN
    Par fages dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/05/2004, 10h18
  2. erreur3073 Problème requête
    Par amel123456789 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/04/2004, 10h15
  3. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07
  4. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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