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 :

Fonction max SQL


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut Fonction max SQL
    bonjour,

    j'aimerai savoir comment integrer la fonction SQL MAX dans mon fichier pour pouvoir avoir que la ligne DL_NO la plus grande en fonction de chaque AR_Ref.

    merci.



    TEST SQL MAX.xlsx

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    La fonction max(plage de cellules) s'applique à excel alors que la fonction max(colonne) s'utilise en SQL.
    Le SQL est applicable sur une base relationnelle, rien à voir avec excel qui est un tableur.
    Si votre question concerne excel, il faut donc la poser dans le forum excel

  3. #3
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    dans mon fichier excel il y a une requette SQL (ci jointe) et c'est bien sur SQL que je voudrais mettre la fonction MAX.




    INSTRUCTION SQL.docx

  4. #4
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    bonjour,

    j'ai reduit ma requette SQL :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT F_DOCLIGNE.DL_CMUP, F_DOCLIGNE.DO_Date, F_DOCLIGNE.DO_Domaine, F_DOCLIGNE.DL_No
    FROM PROGALVA.dbo.F_DOCLIGNE F_DOCLIGNE
    WHERE (F_DOCLIGNE.DL_CMUP<>0)

    comment faire pour avoir la valeur MAX de F_DOCLIGNE.DL_No

    merci

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Pour obtenir un agrégat, il faut effectuer un regroupement sur toutes les colonnes non agrégées

    Note :
    • les parenthèses de la restrictions sont inutiles, autant les enlever
    • l'un des intérêts des alias de table, c'est de faciliter le nommage, autant prendre un nom plus court que celui de la table in extenso


    Ce qui donne une requête du type :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DL.DL_CMUP
         , DL.DO_Date
         , DL.DO_Domaine
         , DL.DL_No
         , MAX(DL.DL_No)
    FROM PROGALVA.dbo.F_DOCLIGNE  as DL
    WHERE DL.DL_CMUP<>0
    GROUP BY DL.DL_CMUP
           , DL.DO_Date
           , DL.DO_Domaine
           , DL.DL_No

    Et pensez à utiliser les balises CODE (symbole # de la barre d'icones) pour encadrer votre code

  6. #6
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    merci pour la requette qui fonctionne mais je n'ai plus la colonne AR_Ref.
    restitution requette.docxrestitution requette.docx

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    J'ai construit ma requête en fonction de la votre, dans laquelle il n'y avait pas de colonne AR_REF.
    Merci de communiquer la description exacte de la table en jeu (idéalement le script CREATE TABLE) et un exemple de résultat attendu

  8. #8
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    ok je comprend vous avez pris ma requette limitee au max pour essayer de comprendre comment utiliser la fonction max.

    ci joint la requette de base.INSTRUCTION SQL.docx

    en fait il me faut le plud grand DL_No pour chaque AR_Ref donc une ligne par ref AR_Ref.

    merci d'avance.

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Sauf que vous n'expliquez pas dans quelle table se trouve la colonne DL_NO, on ne peut pas le deviner.
    C'est pourquoi je vous ai demandé plus haut la description exacte des tables, pas une copie d'écran avec des schémas partiels, mais le script contenant les ordres CREATE TABLE.

    Si la colonne DL_NO se trouve dans une autre table que celle où se trouve la colonne AR_REF (donc si DL_NO n'est pas dans la table F_ARTSTOCK), il faudra mettre en œuvre des jointures.

    Du coup la requête ressemblera à quelque chose comme ceci, à adapter en fonction du nom de la table où se trouve DL_NO et des noms de colonnes de jointure.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select AST.AR_Ref
         , mas(XXX.DL_NO)
    from F_ARTSTOCK as AST
    inner join autre_table as XXX
       on XXX.colonneX = AST.colonneY
      and XXX.colonneZ = AST.colonneW
    group by AST.AR_Ref

  10. #10
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    bonjour,

    effectivement le DL_NO est dans la table F_DOCLIGNE.DL_No et l'info sommiel est dans la table F_ARTICLE.AR_Sommeil , du coup comment faut il faire pour joindre plusieurs table ?

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    La réponse est dans mon post précédent...

    On tourne en rond, si vous aviez communiqué le script de création des tables (DDL avec les ordres CREATE TABLE), comme je le réclame depuis le début, il y a longtemps que le problème serait résolu !

    Le DDL ça ressemble à ceci :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE AG_agent(
       AG_ident INT IDENTITY,
       AG_nom VARCHAR(50) NOT NULL,
       AG_prenom VARCHAR(50) NOT NULL,
       PRIMARY KEY(AG_ident)
    );
     
    CREATE TABLE SI_site(
       SI_ident INT IDENTITY,
       SI_code CHAR(6) NOT NULL,
       SI_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(SI_ident),
       UNIQUE(SI_code)
    );


    Vous donnez les informations au compte-goutte, c'est pour ça qu'on n'avance pas.

  12. #12
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    j'ai modifié la requete comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select AST.AR_Ref
         , max(DOC.DL_NO)
    from F_ARTSTOCK as AST
    inner join F_DOCLIGNE  as DOC
       on DOC.AR_Ref = AST.AR_Ref
      and DOC.AR_Ref = AST.AR_Ref
    group by AST.AR_Ref
    et ça fonctionne mais j'aurais besoin d'avoir DL CMUP qui est dans la table F DOCLIGNE , DO DATE qui est dans la table F DOC LIGNE et AR SOMMEIL qui est dans la table F ARTICLE.

    ce qu'il me faut comme résultat c'est :

    AR REF avec le plus récent DL NO et avec toutes les autres infos sur les lignes.

    merci beaucoup

  13. #13
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    comment faut il faire pour trouver le DDL ?

  14. #14
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Quel est le SGBD ?

  15. #15
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    je ne sais pas trop tout ce que je peux vous dire c'est que c'est une base SQL et la requette est faite avec MS QUERY.

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Que donnent les commandes :

    SELECT @@VERSION ==> applicable sur SQL Server, MySQL et MariaDB
    SELECT VERSION() ==> applicable sur PostrgreSQL
    SELECT * FROM V$VERSION ==> applicable sur Oracle
    SELECT getvariable('SYSIBM.VERSION') FROM SYSIBM.SYSDUMMY1 ==> applicable sur DB2 for Z/OS
    SELECT service_level from sysibmadm.env_inst_info ==> applicable sur DB2 for LUW

  17. #17
    Membre habitué
    Homme Profil pro
    comptable
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    bonjour,

    voici ce que cela donne avec SELECT @@VERSION :

    Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 
    	Feb 10 2012 19:39:15 
    	Copyright (c) Microsoft Corporation
    	Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

  18. #18
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 778
    Billets dans le blog
    10
    Par défaut
    Ok, donc on est sur SQL server

    Vous pouvez utiliser le tuto ICI pour obtenir le DDL

Discussions similaires

  1. [SQL] Fonction Max SQL
    Par Antichoc dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/03/2007, 17h17
  2. requete SQl avec la fonction max () qui ne marche pas
    Par eclipse012 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 14h32
  3. [VB6] Recordset et la fonction max() SQL
    Par zako dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/05/2006, 09h56
  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. [SQL Server 8] fonction Max --- selon des conditions
    Par Baquardie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2006, 21h06

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