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

Requêtes PostgreSQL Discussion :

Group By simple ne fonctionne pas


Sujet :

Requêtes PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Group By simple ne fonctionne pas
    Bonjour à tous,

    j'ai un petit souci sur du PostGreSQL, je n'arrive pas à voir comment le résoudre.
    Voici le contexte :

    J'ai des rapports excel qui sont insérés dans une base de données (le nom du rapport, la date, l'id). Il y a plusieurs rapports par jour (et il y a donc une insertion pour chaque heure de la journée dans la DB), mais il n'y a au final qu'un seul fichier excel présent sur le serveur (il est update).

    Quand je fais un fetch de la base de données pour récupérer les informations, il va me fetch bien sûr toutes les lignes d'une même journée, et moi j'aurais besoin de regrouper ces lignes pour une seul date JOUR.

    Voici le format de ma colonne "date" : 2016-09-16 11:44:55

    Donc comme je l'ai expliqué, ce que j'aimerais c'est tout regrouper toutes les lignes d'un même jour.

    J'ai essayé de faire un Group By, mais quand j'effectue la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from ma_table group by date;
    j'ai l'erreur suivante qui s'affiche : column "matable.id" must appear in the GROUP BY clause or be used in an aggregate function

    J'ai également essayé de faire un to_string() pour formater la date et ne conserver que l'année / mois / jour, mais j'ai malheureusement une autre erreur qui s'affiche : column "date" does not exist
    (comme vous vous en doutez, la colonne existe bien).

    En bref, je n'arrive pas à regrouper ces données, sauriez-vous par quelle méthode je peux passer ?

    En vous remerciant par avance !

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Vous devez mettre en cohérence les colonnes du select avec celles du group by :

    par exemple, cette requête est correcte :
    SELECT COL1, COL2, MAX(COL3) from matable group by COL1, COL2

    Celle ci ne l'est pas
    SELECT COL1, COL2, MAX(COL3) from matable group by COL1

    IL faut donc modifier votre requête, et ça tombe bien, car il ne faut jamais utiliser de select *


    EDIT : J'ajoute que GROUP BY est utilisé pour les fonctions d'agrégation, pas pour dédoublonner, comme vous ne faites aucune agrégation, vous n'en avez pas besoin, utilisez éventuellement DISTINCT

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    merci pour votre réponse,

    alors je ne sais pas du tout pourquoi je n'ai pas pensé au DISTINCT, effectivement ce serait une bonne méthode, mais le souci c'est que comme il y a l'heure dans ma case de date, je ne peux pas trier !

    Il faudrait que je reformate la colonne date pour ne pas avoir l'heure, et qu'après j'utilise un distinct...

    Je n'arrive pas à faire fonctionner le to_char ou to_date, auriez-vous un avis sur la question ?

    Merci encore !

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Plutôt que d'expliquer ce que vous n'arrivez pas à faire, il est préférable de décrire les tables que vous utilisez, avec un extrait du contenu, et de produire un exemple de résultat attendu

Discussions similaires

  1. [XL-2010] Boucles imbriquées très simples : ne fonctionne pas
    Par funkyspirit dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2012, 11h58
  2. [Oracle] SQL: group by qui ne fonctionne pas
    Par Thomf dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/01/2012, 15h27
  3. Réponses: 8
    Dernier message: 17/03/2011, 09h16
  4. Pourquoi ce formulaire simple ne fonctionne pas ?
    Par mcog2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 06/04/2010, 11h17
  5. XHTML -> XSL -> XML, même le plus simple ne fonctionne pas !
    Par Zulie494 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/11/2008, 16h38

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