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 :

Grouper Par Mois, Site, en fonction Statut


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut Grouper Par Mois, Site, en fonction Statut
    Bonjour ;
    Je cherche à Grouper des cotisations par site, statut et mois
    Par exemple
    J’ai trois tables Personne, Cotisation, Site

    Personne

    Nom
    Prénom
    numSecu
    numMatri
    Ect..

    Pour la cotisation il y a une dure de cotisation donc date de début et et date de fin de cotisation et le statut de la cotisation

    Cotisation
    Montant
    dateDebut (jj/mm/aaaa)
    datefin (jj/mm/aaaa)
    statut
    Ect..

    Et enfin la table Site
    les cotisations sont collectés au site où la personne est attachés

    Site
    Non Site
    Ect..

    Résultat attendu : Nombre de Cotisations par Site par Mois en fonction du Statut (de la Cotisation)

    Site Janvier Février Mars Avril Mai Ect.. Décembre
    A 5 5 23 4 5 6 4
    B 12 8 5 3 5 42 11
    C 6 9 6 4 8 3 3


    Je sais pas comment mis prendre surtout pour extraire le mois pour information EXTRACT ne marche pas. J’utilise JPQL

  2. #2
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    il faut penser au résulat LIGNES et non pas COLONNES.
    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
     
    Site mois(mm/yyyy) 
    A Janvier/2011 
    A Février/2011 
    A Mars /2011
    A Avril /2011
    A Mai /2011
    Ect.. 
    B Décembre/2011
    B Janvier /2012
    B Février /2012
    B Mars /2012
    B Avril /2012
    B Mai /2012
    Ect.. 
    B Décembre/2012
    ....
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci Pour votre Reponse

    Mon Probleme c'est pas l'affichage
    Mais c'est surtout comment formuler la requete avec les counts de chaque mois de L'année
    Et extraire le mois de la Date et grouper dessus

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Bonjour;

    J'ai fait des choses pour répondre à ma demande
    Pour vous dire vrai, je ne suis pas sure du résultat mais pas du tout
    Donc je reviens vers vous pour une vérification
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ct.idCotisation, count(ct.statut),ct.statut, monthname(ct.datedeFin) As  DateFin,st.nomSite,MONTH(ct.datedeFin) AS DateFin 
      FROM Cotisation ct
      INNER JOIN   Personne p on ct.Cotisation=p.idPersonne
      INNER JOIN   Site st on st.idSite=p.idSite
      group by monthname(ct.datedeFin),st.nomSite,ct.statut;
    Merci Encore

  5. #5
    Membre éprouvé
    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
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Nombre de Cotisations par Site par Mois en fonction du Statut (de la Cotisation)
    A priori vous devez faire votre count sur id_cotisation, et grouper par mois, par site et par statut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
               monthname(ct.datedeFin) AS  Mois, 
               st.nomSite, 
               ct.statut, 
               count(ct.idCotisation) AS nb_cotisations
      FROM Cotisation ct
      INNER JOIN   Personne p ON ct.Cotisation=p.idPersonne
      INNER JOIN   Site st ON st.idSite=p.idSite
      GROUP BY monthname(ct.datedeFin), st.nomSite, ct.statut;

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Bonjour
    Merci pour la Reponse
    J'arrive à afficher les donnés mais mon probleme
    c'est d'afficher tout les mois même si il ya pas de cotisations
    Exemple

    Encore Merci
    Images attachées Images attachées  

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pour cela, vous pouvez faire une jointure externe sur des tables mois.

    SQLPro a ecrit un article à ce sujet : http://sqlpro.developpez.com/cours/gestiontemps/#L3

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 790
    Points
    30 790
    Par défaut
    Tu cherches donc à afficher des informations qui n'existent pas dans ta table (des mois sans cotisation) ?
    Et où ton SGBD les trouverait-il alors ?

    Il te faut une table calendrier (avec au moins la liste des mois) sur laquelle tu feras une jointure externe.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci
    En Base j'ai pas une table Calendar
    j'utilise jsf pour choisir mes Dates et les persister
    J'espére qu' on pouvez jouer sur la date de fin pour afficher tout les mois
    mais je ne sais pas comment
    En core Merci
    Images attachées Images attachées  

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 790
    Points
    30 790
    Par défaut
    En ajoutant à ton modèle une table des mois (numMois, nomMois) :
    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
    SELECT  mth.nomMois
        ,   sit.nomSite
        ,   cot.statut
        ,   COUNT(cot.idCotisation)     AS nb_cotisations
    FROM    Liste_Mois  mth
        CROSS JOIN
            Site        sit
        INNER JOIN
            Personne    prs
            ON  sit.idSite      = prs.idSite
        LEFT JOIN   
            Cotisation cot
            ON  cot.Cotisation  = prs.idPersonne
            AND EXTRACT(MONTH FROM cot.datedeFin) = mth.numMois
    GROUP BY 
            mth.nomMois
        ,   sit.nomSite
        ,   cot.statut
    ;
    Tu auras ainsi pour chaque personne et chaque mois une ligne retournée, même s'il n'y a pas de cotisation correspondante.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Grouper par mois à l'aide de EXTRACT
    Par QGRdev dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/12/2012, 17h44
  2. grouper par mois un timestamp
    Par broule dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/09/2010, 16h23
  3. grouper par mois dans une listview
    Par superkiller dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 24/01/2010, 14h25
  4. [Interbase] selectionner et grouper par mois ?
    Par makaphrodite dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/11/2008, 15h20
  5. [MySQL] Grouper par mois
    Par Friedrick dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/09/2008, 15h57

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