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

  1. #1
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    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 : 723
    Points : 627
    Points
    627
    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 chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    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...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  3. #3
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    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 : 723
    Points : 627
    Points
    627
    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 confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    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 : 723
    Points : 627
    Points
    627
    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 chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    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...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  6. #6
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    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 : 723
    Points : 627
    Points
    627
    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

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par wd_newbie Voir le message
    Franchement Laurent, tu n'as jamais pensé à mettre un bouton "Faire un don" sur tes réponses
    Les forums m'ont souvent sortis d'affaire.
    Mes contributions ne sont qu'un juste retour.

    Une contribution sur un forum est un don.
    Un don c'est gratuit, tout au plus il en découle une gratitude...

    Un très bel article Gratuité → Gratitude
    http://laqvt.fr/gratuite-et-gratitude

    Le forum n'a pas de bouton pour faire un don parce que ce n'est pas approprié.
    Par contre il y a un bouton pour exprimer sa gratitude
    Comme quoi le forum est bien fait...

    PS: J'ai bien compris que tu fais de l'humour et ça vaut gratitude
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  8. #8
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    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 : 723
    Points : 627
    Points
    627
    Par défaut
    Le est sacrément de mise .. c'est fait !

    Bonne soirée et encore merci.

    Olivier

+ 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