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 :

Calcul du salaire MAX entre 2 colonnes


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Calcul du salaire MAX entre 2 colonnes
    Bonjour, j'ai réussis grâce à vous à faire calculer le salaire entre 2 colonnes, alors je reviens vers vous afin que vous m'aidiez à trouver le maxi des salaires calculer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select s.nummatric, s.nom, s.prenom, max(salaire) 
     
      from
            (SELECT s.nummatric, s.nom, s.prenom, se.nomservice,
            sum(case when r.sens='+' then e.montant else NULL end)
            - 
            sum(case when r.sens='-' then e.montant else NULL end) "SALAIRE"
            FROM rubrique r, elements e, salarie s, service se
            WHERE e.nummatric=s.nummatric
            AND e.norubrique=r.norubrique
            and s.codservice = se.codservice
            GROUP BY s.nom, s.prenom, s.nummatric, se.nomservice)
    order by s.nummatric asc;
    QL Error: ORA-00904: "S"."NUMMATRIC" : identificateur non valide
    00904. 00000 - "%s: invalid identifier"

    et quand je change, j'ai encore d'autres erreurs. Est ce que ma syntaxe du départ n'a pas un problème??
    merci

  2. #2
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT s.nummatric, s.nom, s.prenom, se.nomservice,
            sum(case when r.sens='+' then e.montant else NULL end)
            - 
            sum(case when r.sens='-' then e.montant else NULL end) "SALAIRE"
            FROM rubrique r, elements e, salarie s, service se
            WHERE e.nummatric=s.nummatric
            AND e.norubrique=r.norubrique
            and s.codservice = se.codservice
            GROUP BY s.nom, s.prenom, s.nummatric, se.nomservice
            having max(salaire);
    QL Error: ORA-00920: op�rateur relationnel non valide
    00920. 00000 - "invalid relational operator"

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Peut-être comme ceci (je ne me suis posé aucune question quand à la plausibilité de cette requête)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT req.nummatric, req.nom, req.prenom, max(req.salaire) 
     
      FROM
            (SELECT s.nummatric, s.nom, s.prenom, se.nomservice,
            sum(case when r.sens='+' then e.montant else NULL end)
            - 
            sum(case when r.sens='-' then e.montant else NULL end) "SALAIRE"
            FROM rubrique r, elements e, salarie s, service se
            WHERE e.nummatric=s.nummatric
            AND e.norubrique=r.norubrique
            AND s.codservice = se.codservice
            GROUP BY s.nom, s.prenom, s.nummatric, se.nomservice) req
    ORDER BY req.nummatric ASC;

  4. #4
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci, je vais tester et vous dire ce qu'il en est

  5. #5
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Bonjour, j'ai testé ta requête et voilà l'erreur qu'elle me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Error at Command Line:1 Column:7
    Error report:
    SQL Error: ORA-00937: la fonction de groupe ne porte pas sur un groupe simple
    00937. 00000 -  "not a single-group group function"
    *Cause:    
    *Action:
    Merci

  6. #6
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    j'ai aussi essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select ser.codservice, ser.nomservice, sal.nom, sal.prenom, 
          sum(case when rub.sens='+' then MAX(ele.montant) else null end)
          -
          sum(case when rub.sens='-' then MaX(ele.montant) else null end)  "MAX SALAIRE" 
          from rubrique rub, elements ele, salarie sal, service ser
      where ele.norubrique=rub.norubrique
      and ele.nummatric=sal.nummatric
      and sal.codservice=ser.codservice
     
    group by ser.codservice, ser.nomservice, sal.nom, sal.prenom;
    et j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Error at Command Line:1 Column:7
    Error report:
    SQL Error: ORA-00937: la fonction de groupe ne porte pas sur un groupe simple
    00937. 00000 -  "not a single-group group function"
    *Cause:    
    *Action:
    Merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    Bonjour, j'ai testé ta requête et voilà l'erreur qu'elle me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Error at Command Line:1 Column:7
    Error report:
    SQL Error: ORA-00937: la fonction de groupe ne porte pas sur un groupe simple
    00937. 00000 -  "not a single-group group function"
    *Cause:    
    *Action:
    Merci
    pour corriger la requete en question il faut ajouter "GROUP BY" dans la requete principale sinon la fonction max ne pourra pas s'executer.

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

Discussions similaires

  1. Requête chiffre max entre plusieurs colonnes inconnues
    Par christophebe dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/02/2015, 20h21
  2. [WD18] Calcul entre deux colonnes d'une table
    Par Alex1993 dans le forum WinDev
    Réponses: 4
    Dernier message: 19/09/2013, 08h20
  3. Réponses: 0
    Dernier message: 11/04/2012, 14h36
  4. Calcul date entre 2 colonnes
    Par willytito dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/11/2007, 10h15
  5. Requête SQL pour max entre 3 colonnes
    Par lucho013 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 10/10/2007, 17h06

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