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 :

syntax avec group by


Sujet :

Langage SQL

  1. #1
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 50
    Par défaut syntax avec group by
    Bonjour,
    j'utilise postgresql et j'ai un pb pour retourner une valeur en requête sql.

    je ne sais pas si une clause group by peut sufir ou si je dois passer par une sous requête.

    mes données en entrée dans ma table :

    id_parcelle, proprio, zone, surface
    146, paul, 3, 10 hectares
    147, paul, 3, 15 hectares
    148, paul, 4, 50 hectares
    149, paul, 4, 40 hectares

    je calcul la sum des surface par proprio avec un group by
    select zone, sum(surface) as surface_totale from...... group by proprio
    j'obtiens :

    zone, surface_totale
    3, 25 hectares
    4, 90 hectares

    je voudrais seulement garder la surface maxi et le code zone soit une seule ligne :
    zone, surface_totale
    4, 90 hectares

    je me perds dans les group by et les havings, ou les sous requete.
    si vous pouvez m'aider !
    cordialement,

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Attention c'est laid :

    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
    select *
    from
    (
         select zone, sum(surface) as surface_totale 
         from...... 
         group by proprio
    )
    where surface_totale = 
                            (
                                        select max(surface_totale) 
                                        from 
                                        (
                                                select zone, sum(surface) as surface_totale 
                                                from...... 
                                                group by proprio
                                        )
                            )
    A toi de l'améliorer ^^

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Salut,

    je ne connais pas trop la syntaxe pour postgresql, mais tu devrais t'en sortir en ordonnant tes resultats selon la surface (ORDER BY surface DESC) et en n'en conservant qu'un seul (LIMIT 1)

  4. #4
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 50
    Par défaut
    je ne pensais pas du tout a la syntaxe sql LIMIT

    merci beaucoup, c'est plus simple que les sous-requête.

    en postgresql la fin de la requete sql est :

    ...... order by surface_totale desc limit 1


    (ou surface_totale est l'alias du champ calculé sum(surface), en effet postgresql accepte de prendre l'alias dans la clause order by (mais pas dans les group by)

    merci a tous les deux !

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

Discussions similaires

  1. Problème de syntaxe avec group by
    Par David78180 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2010, 09h08
  2. Souci de syntaxe avec group by
    Par Rémiz dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/09/2009, 17h31
  3. Syntaxe d'une requête avec GROUP
    Par gvdmoort dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/10/2006, 15h10
  4. [langage] Pb de syntaxe avec GOTO
    Par BEAUJAULT dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2004, 16h02
  5. update avec group by
    Par slc dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2004, 13h44

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