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 :

Problème avec les GROUP BY


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 20
    Par défaut Problème avec les GROUP BY
    Bonjour
    Je voudrai compter le nombre d'affaires induites par chaque source.
    Je peux facilement le faire par mois.
    J'ai une date, un IDaffaire et un IDsource
    Je crée an et mois par year et month sur la date
    Je groupe par an, mois et id source et je compte le nb d'IDaff

    Ca se complique quand je veux préciser de telle date à telle date.
    Je ne vois pas où mettre le filtre du 01/05/2008 au 30/09/2008 par exemple, avec toujours mon comptage par mois.

    Ca se complique aussi quand je veux faire afficher toutes les sources possibles même si il n'y a pas eu d'affaire.
    J'ai une table SOURCES avec idsource et source, j'ai assayé de faire la jointure en précisant tous les enregistrement de SOURCES mais vu qu'il ny a pas d'affaire donc pas de date, an, mois et la ligne n'apparait pas pour le mois compté.
    Si qulequ'un a une idée je le remercie par avance.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par didier.M Voir le message
    Je voudrai compter le nombre d'affaires induites par chaque source.
    Je peux facilement le faire par mois.
    J'ai une date, un IDaffaire et un IDsource
    Je crée an et mois par year et month sur la date
    Je groupe par an, mois et id source et je compte le nb d'IDaff
    Avec la structure des tables et la requête que vous avez faite, ce serait plus facile de vous aider.

    Ca se complique quand je veux préciser de telle date à telle date.
    Je ne vois pas où mettre le filtre du 01/05/2008 au 30/09/2008 par exemple, avec toujours mon comptage par mois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ladate BETWEEN datemin AND datemax
    Ca se complique aussi quand je veux faire afficher toutes les sources possibles même si il n'y a pas eu d'affaire.
    J'ai une table SOURCES avec idsource et source, j'ai assayé de faire la jointure en précisant tous les enregistrement de SOURCES mais vu qu'il ny a pas d'affaire donc pas de date, an, mois et la ligne n'apparait pas pour le mois compté.
    Problème déjà évoqué il y a peu, hier ou avant-hier je crois...
    Grosso-modo, il faut une table des mois et faire une jointure externe de la table des sources pour avoir toutes les sources et de la table des mois pour avoir tous les mois.
    Il y a un tutoriel de SQLPro qui parle des calculs sur les dates et donne une structure de BDD pour le traitement des dates.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 20
    Par défaut
    Merci pour votre réponse

    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
     
    Table AFFAIRES
    idaff
    idsource
    date
     
    Table SOURCES
    idsource
    source
     
     
    Vue AFFAIRES_SOURCES
    Select idaff,date, year(date) as an, month(date) as mois, source, date
    from AFFAIRES inner join SOURCES ON AFFAIRES.idsource=SOURCES.idsource
     
     
    VUE COMPTE
    SELECT     COUNT(idaff) AS nb, source, an, mois
    FROM         affaires_sources
    GROUP BY source, an, mois
    ORDER by an, mois, source
    Je peux filtrer sur une année avec la clause having
    mais je ne sais pas ou mettre le filtre
    WHERE date between ---- and ----
    Je ne veux pas que date fasse partie du groupement.
    Merci

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Syntaxe générale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT colonnes
    FROM tableA
    JOIN tableB ON condition de jointure
    WHERE condition de restriction sur les lignes
    GROUP BY colonnes de regroupement ==> toutes les colonnes du SELECT qui n ont pas de fonction de regroupement
    HAVING condition de restriction sur le résultat du regroupement
    ORDER BY colonnes
    Puisque tu cherches apparemment à n'opérer la requête que sur les lignes dont la date est comprise entre deux bornes, c'est donc dans le WHERE qu'il faut mettre cette restriction.
    Si c'est une restriction sur l'année par exemple, c'est dans le HAVING : HAVING YEAR(date) = 2009

    Au passage, il faut éviter de nommer les colonnes avec des mots SQL tels que DATE.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 20
    Par défaut
    Merci bien
    Je ne savais pas où placer la clause where.
    Date c'était pour l'exemple, j'évite les accents, les espaces et les mots réservés pour ne pas à avoir à mettre les [].
    Encore merci

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

Discussions similaires

  1. Problème avec les Groupe layout
    Par LaurineD dans le forum Général Java
    Réponses: 0
    Dernier message: 01/05/2010, 18h03
  2. Problème avec les sections de groupe de mon DataReport
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 20/11/2007, 12h12
  3. [Cognos 6][Impromptu] Problème avec les champs groupés
    Par nicoduhavre dans le forum Cognos
    Réponses: 4
    Dernier message: 23/03/2007, 15h27
  4. Problème avec les cases d'un groupe d'option.
    Par auriolbeach dans le forum Access
    Réponses: 2
    Dernier message: 01/10/2005, 07h33
  5. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18

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