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 :

Éviter sous-requête avec la fonction max


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 1
    Par défaut Éviter sous-requête avec la fonction max
    Bonjour,

    Comment écrire de manière plus simple (sans sous-requête) une requête renvoyant la valeur de la colonne c1 lorsque la valeur de la colonne c2 est maximale, et sans faire apparaitre c2 dans la projection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c1 FROM t WHERE c2=(SELECT MAX(c2) FROM t)
    Merci d'avance pour vos conseils.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Utilisez une fonction analytique, il y a un tutoriel sur ce site.

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Citation Envoyé par Elendil0 Voir le message
    Bonjour,

    Comment écrire de manière plus simple (sans sous-requête) une requête renvoyant la valeur de la colonne c1 lorsque la valeur de la colonne c2 est maximale, et sans faire apparaitre c2 dans la projection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c1 FROM t WHERE c2=(SELECT MAX(c2) FROM t)
    Merci d'avance pour vos conseils.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select max(c1) keep (dense_rank first order by c2 desc)
    qui veut dire: donnes moi la valeur de c1 qui correspond à la valeur max de c2

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select empno, ename, max(sal) keep (dense_rank first order by comm desc)
    over (partition by deptno)
    from emp;
    Qui veut dire: Pour chaque département, donnes moi la valeur de sal qui correspond à la valeur max de comm.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Mohamed.Houri;6772171...

    qui veut dire: donnes moi la valeur de c1 qui correspond à la valeur max de c2
    ...
    La première requête est incomplète donc nous ne savons pas ce qu’elle signifie ; Keep (dense_rank first) existe sous sa forme de fonction de group assez bien que sous sa forme analytique.

    La deuxième requête affiche tous les enregistrement de la table emp et non pas ceux qui corresponde à la valeur maximale d’une autre colonne.

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/10/2008, 14h00
  2. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 21h25
  3. Requête avec sélection sur MAX et Rupture par Service
    Par Kmiecik Sigismond dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/04/2006, 14h00
  4. [Débutant / SQL] Requête avec la fonction MAX
    Par bugmenot dans le forum Access
    Réponses: 3
    Dernier message: 14/04/2006, 10h43
  5. Pb avec la fonction Max d'access
    Par abaad dans le forum Access
    Réponses: 1
    Dernier message: 03/04/2006, 17h43

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