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 :

aide pour utilisation group by


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 15
    Par défaut aide pour utilisation group by
    Bonjour,
    j'ai la configuration suivante:

    c1 c2 date
    _________________
    1 2 d1
    1 3 d2
    2 1 d3
    2 5 d4


    je veux afficher pour chaque élément de la colonne c1, la somme des éléments de la colonne c2, et la date correspondant à l'élément c2 le plus élevé
    Ce qui me donnerait:
    c1' c2' date'
    _________________
    1 5 d2
    2 6 d4

    j'essaye:

    select c1, sum(c2)
    from table
    group by c1

    mais la date correspondant à la colonne c2 la plus élevée me pose problème

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 433
    Billets dans le blog
    11
    Par défaut
    Salut,

    C'est normal, car il faut que tu fasses une sous requête. Va voir ce lien.

    @+.

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    bonjour,

    essaye:

    select c1, sum(c2),max(date) as maxdate
    from table
    group by c1

    A+

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 15
    Par défaut
    bonjour,

    essaye:

    select c1, sum(c2),max(date) as maxdate
    from table
    group by c1

    A+
    soltani1,ceci me ramène la date la plus élevée du groupe et non celle correspondant à la valeur de c2 la plus élevée!

    Je sens que la seule solution revient effectivement à faire une sous requete mais je cherchais une astuce utilisant les fonctions de groupe.

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour,

    D'après ton exemple j'avais compris que tu voulais le max pour chaque groupement.

    A+

  6. #6
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    A ma connaissance ce genre de problème n'a pas de solution totalement satisfaisante.

    Garder une liste des max de c2 par c1. Un peu pénible mais se récupère facilement.

    Requêtes imbriquées ou join à coucher dehors (généralement une cata pour les perfs)

    Une requête qui donne le max(c2) (et ici le sum(c2)) puis dans le code pour chaque résultat faire une requête pour trouver la ligne qui a ce c2. Facile a implémenter mais si beaucoup de c1 ça fait beaucoup de requêtes.

    Tout lister dans l'ordre et coder la somme et tout. Facile pour la BDD mais beaucoup plus lourd pour le client.

    si vous avez d'autres idées... Une procédure stockée pour réaliser la solution précédante peut-être ?

    On devrait voter mais je crois que c'est un des plus gros trous du SQL.

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

Discussions similaires

  1. Aide pour utilisation d'une fonction DLL
    Par Hell dans le forum Langage
    Réponses: 10
    Dernier message: 22/07/2008, 10h51
  2. Besoin d'aide pour utiliser RSA
    Par AsmCode dans le forum Sécurité
    Réponses: 1
    Dernier message: 26/08/2007, 19h11
  3. Demande d'aide pour utilisation d'un QuickReport
    Par altadeos dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2006, 07h12
  4. de l'aide pour utiliser XSLT
    Par Diallos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/01/2006, 15h55
  5. Besoin d'aide pour utilisation des trie
    Par bluecurve dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 08h04

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