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

WinDev Discussion :

Statistiques ages par groupe d'age [WD18]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut Statistiques ages par groupe d'age
    Bonjour,

    je suis en train d'essayer de mettre en place des statistiques dans une application, ces stats doivent porter sur des ages :

    J'ai un fichier qui contient des infos sur des personnes (enfants ) avec un champ date de naissance, avec une requête j’extrais des infos de type :

    - date séjour ( entre le ... et le ... )
    - Age

    Pour la rubrique Age, j'extrais avec un champ calculé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WL.Val(WL.Gauche(WL.Age(Enfants.Date_naissance,WL.DateSys()),4))
    Au niveau de la requête cela me donne :

    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
    0
    1
    10
    11
    13
    15
    19
    21
    22
    3
    37
    39
    6
    8
    9
    - premier truc j'ai mis un ORDER BY Age et même que la fonction Age est de type Val(...) , le tri est alphabétique et non numérique ...

    - deuxième truc , impossible de faire des sommes par age , "Wdtst.exe a cessé de fonctionner" à tous les coups ...

    Question subsidiaire, l'idéal serait d'avoir des tranches d'ages ( 0- 5 / 5 - 10 / 10 - 15 / ... ) , c'est faisable par requête d'après vous ?


    Vous avez déjà essayé de faire ce type de graphe sur requête ?

    merci d'avance


    Olivier

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Pour l'ORDER BY Val() j'ai pas d'idée, ça me parait étrange mais en même temps rien ne m'étonne sur ce "SGBD"...

    Pour faire des intervalles de valeurs le plus simple est d'utiliser des CASE WHEN [age]>10 and_ [age]<15 (par exemple).

    Wdtst.exe a cessé de fonctionner ---> aucune idée non plus, ça m'arrive aussi de pas pouvoir tester correctement...

  3. #3
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut
    Merci pour les réponses, je vais voir ce que j'arrive a faire avec les : CASE WHEN

    Merci pour ton aide

    Olivier

  4. #4
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut
    Hello,

    .. pas réussi à gagner contre les CASE pour sortir un truc qui marche ...

    J'ai réussi a faire des stats par age et non tranches d'ages avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT COUNT(JSP.JSP_ID) AS Nbre , 
    CEIL(MONTHS_BETWEEN(SYSDATE,Date_naissance)/12) + ' ans'  AS Age,
    CEIL(MONTHS_BETWEEN(SYSDATE,Date_naissance)/12)    AS Num 
    FROM 
    JSP, Enfants
    WHERE 
    Enfants.IDEnfants = JSP.JSP_Enfant
    AND 
    Enfants.Date_naissance<>''
    AND JSP.JSP_Date BETWEEN {dDateDebu} AND {dDateFin}
    GROUP BY Age,Num
    ORDER BY Num
    Bon pour l'instant "ça va d'aller", le délai est en approche ...
    Olivier

  5. #5
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Il est tout à fait possible de faire une requête qui donne le nombre d'enfant par intervalle d'âge.

    D’ailleurs tu y étais presque...

    Il suffit de faire une 1ère requête qui retourne la liste des enfants avec l'age de chacun (j'ai repris ta formule de calcul d'age).
    En suite de faire une 2ème requête qui compte le nombre d'enfant par intervalle d'age en utilisant CASE comme te l'avait suggéré michel.souris

    La requête :
    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
    	CASE 
    		WHEN REQ_Age.Age BETWEEN  0 AND  5 THEN '[ 0, 5]' 
    		WHEN REQ_Age.Age BETWEEN  6 AND 10 THEN '[ 6,10]' 
    		WHEN REQ_Age.Age BETWEEN 11 AND 15 THEN '[11,15]' 
    		ELSE '[16,..]'
    	END AS Classe,	
    	COUNT(*) AS Nb
    FROM
    	(
    		SELECT 
    			Enfants.ID AS ID,	
    			WL.Val(LEFT(WL.Age(Enfants.Date_naissance,WL.DateSys()),4)) AS Age
    		FROM 
    			Enfants
    	) AS REQ_Age
    GROUP BY Age
    Si tu utilises l'éditeur de requête, il suffit de faire la sous requête Req_Age, puis de faire la requête avec CASE et COUNT sur la sous requête...

  6. #6
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut
    Franchement Laurent, tu n'as jamais pensé à mettre un bouton "Faire un don" sur tes réponses

    Franchement avec le nombre de fois que tu m'as dépanné ...

    J'ai réussi à sortir mes tranches d'age les doigts dans le nez.

    Juste un truc : "GROUP by Classe" et non "GROUP by Age", le regroupement foirait si il était fait sur la sous-requête ,mais autrement c'est nickel

    merci beaucoup.

    Je mets le code fonctionnel ci-dessous si ça peut aider quelqu'un

    @micalement

    Olivier

    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
    22
    23
    24
     
     
    	SELECT
    	CASE 
    	WHEN REQ_Age.Age BETWEEN  0 AND  5 THEN '[ 0, 5]' 
    	WHEN REQ_Age.Age BETWEEN  6 AND 10 THEN '[ 6,10]' 
    	WHEN REQ_Age.Age BETWEEN 11 AND 15 THEN '[11,15]' 
    	ELSE '[16,..]'
    	END AS Classe,	
    	Count(*) AS Nb
    	FROM
    	(
    	SELECT 
    	Enfants.IDEnfants AS ID,	
    	CEIL(MONTHS_BETWEEN(SYSDATE,Date_naissance)/12)  AS Age
    	FROM 
    	JSP, Enfants
    	WHERE 
    	Enfants.IDEnfants = JSP.JSP_Enfant
    	AND 
    	Enfants.Date_naissance<>''
     
    	) AS REQ_Age
    	GROUP by Classe

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

Discussions similaires

  1. [Vxi3] Age max par groupe
    Par nawal59 dans le forum Webi
    Réponses: 2
    Dernier message: 07/06/2012, 18h12
  2. [AC-2010] faire un regroupement par tranche d'age sur un état
    Par idiot dans le forum IHM
    Réponses: 7
    Dernier message: 29/09/2010, 11h22
  3. [PHP 5.0] [Dates] Convertir un age par rapport à la date d'aujourd'hui
    Par mecmec dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2009, 13h04
  4. req compter enregi par tranche d'age
    Par rizou40 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/12/2007, 18h46
  5. Calcul de l'age par rapport à 2 dates
    Par PAUL87 dans le forum VBA Access
    Réponses: 10
    Dernier message: 29/11/2007, 22h30

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