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 :

Max de MAX en une seule requête.


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 153
    Points : 75
    Points
    75
    Par défaut Max de MAX en une seule requête.
    Bonjour ou bonsoir à tous!!

    Comment faire un seule requête pour trouver le MAX de "N°" dans le MAX de "Année", soit (le N°64).

    Merci!!

    Année N°
    2004 63
    2004 64
    2004 65
    2006 61
    2006 62
    2006 63
    2006 64

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    en utilisant une sous-requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX( numero)
    FROM ta_table
    WHERE annee = (SELECT MAX(annee) FROM ta_table)
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    On peut utiliser l'order by, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX (numero)
    FROM table
    ORDER BY annee DESC
    Mindiell
    "Souvent, femme barrit" - Elephant man

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 735
    Points
    52 735
    Billets dans le blog
    5
    Par défaut
    Si votre SGBDR accepte une clause de limitation des lignes, vous pouvez faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP 1 numero
    FROM MaTable
    ORDER BY Annee DESC, numero DESC
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Mindiell
    On peut utiliser l'order by, non ?
    Non : il faut introduire la notion d'année max.
    La preuve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX (numero)
    FROM table
    ORDER BY annee DESC
    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
     
    10g SOC5> select *
      2  from dvp;
     
         ANNEE     NUMERO
    ---------- ----------
          2004         63
          2004         64
          2005         62
     
    3 ligne(s) sélectionnée(s).
     
    10g SOC5> select max(numero)
      2  from dvp
      3  order by annee desc;
     
    MAX(NUMERO)
    -----------
             64
     
    1 ligne sélectionnée.
    Dans cet exemple on devrait avoir 62 car l'année max est 2005.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 153
    Points : 75
    Points
    75
    Par défaut


    Merci pour tout!!!!

    çà marche!!!!

  7. #7
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Citation Envoyé par Magnus
    Dans cet exemple on devrait avoir 62 car l'année max est 2005.
    En effet, j'ai oublié de mettre l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT annee, MAX (numero)
    FROM TABLE
    GROUP BY annee
    ORDER BY annee DESC
    Mindiell
    "Souvent, femme barrit" - Elephant man

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Mindiell
    En effet, j'ai oublié de mettre l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT annee, MAX (numero)
    FROM TABLE
    GROUP BY annee
    ORDER BY annee DESC
    L'année commence difficilement pour certain(e)s
    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
    10g SOC5> select *
      2  from dvp;
     
         ANNEE     NUMERO
    ---------- ----------
          2005         78
          2006         75
          2006         77
     
    3 ligne(s) sélectionnée(s).
     
    10g SOC5> select annee, max(numero)
      2  from dvp
      3  group by annee
      4  order by annee desc;
     
         ANNEE MAX(NUMERO)
    ---------- -----------
          2006          77
          2005          78
     
    2 ligne(s) sélectionnée(s).
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  9. #9
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Bah, je croyais qu'il voulait le max de chaque année... J'aurais mal compris
    Mindiell
    "Souvent, femme barrit" - Elephant man

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    SELECT ANNEE , MAX(NUMERO)
    FROM MA_TABLE
    WHERE 1
    GROUP BY ANNEE
    ORDER BY ANNEE DESC
    LIMIT 0 , 1

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

Discussions similaires

  1. Récupérer la valeur max ou min d'une sous requête
    Par GhostSpirit dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2015, 20h16
  2. Réponses: 1
    Dernier message: 16/05/2007, 17h36
  3. [SQL] En une seule requête
    Par Spaccio dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/06/2006, 20h38
  4. Lier trois tables dans une seule requête ?
    Par tempirate dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2006, 19h27
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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