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 et SQL. Discussion :

Calculs par tranches d'âge


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculs par tranches d'âge
    Bonsoir,
    J'espère ne pas m'être encore une fois trompé de discussion.
    Pensionné, je travaille comme bénévole pour une ASBL à caractère social. Celle-ci met entre autres à disposition à des personnes aux moyens financiaires précaires une voiture avec chauffeur pour faire des courses, aller chez le médecin ou à l'hôpital, faire des démarches administratives et autres. Ces usagers paient uniquement les frais de transport. Le chauffeur est bénévole et met son véhicule à disposition.
    A l'aide de livres traitant d'access 2007, j'ai pu réaliser un programme permettant de faire des statistiques. Les années précédentes j'utulisais une requête simple et je transférais les résultats dans Excel 2007 pour affiner les statistiques.
    J'ai actuellement 71 ans et je souhaite que l'ASBL puisse continuer l'utilisation du programme lorsqu je ne serai plus présent.
    Dans les statistiques, je désire connaître pour le nombre de courses de l'année 2017 ((WHERE (((Courses.[N° Course]) Between 2017000000 And 2017999999) AND ((Courses.[N° Chauffeur])<>10)); le nombre d'utilisateurs par tranche d'age (de 0 à 18, de 18 à 20, et ensuite par trance de 10 ans jusque 100 ans.
    Pas du tout habitué au language SQL, après recherche j'ai pris connaissance de la présente discussion et j'ai adapté une information à ma requête. La voici :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT Courses.[N° Course], Courses.[N° Chauffeur], [Age Usagers].Nom, [Age Usagers].Prénom, [Age Usagers].Age, Courses.[Date de la course]
    switch(
    age<18, "moins de 18 ans",
    age>18 AND <20, "entre 25 et 44 ans",
    age>20 AND <30, "entre 20 et 30 ans",
    age>30 AND <40, "entre 30 et 40 ans",
    age>40 AND <50, "entre 40 et 50 ans",
    age>50 AND <60, "entre 50 et 60 ans",
    age>60 AND <70, "entre 60 et 70 ans",
    age>70 AND <80, "entre 70 et 80 ans",
    age>80 AND <90, "entre 80 et 90 ans",
    age>90 AND <100, "entre 90 et100 ans",
    age>=100, "100 ans et plus") AS trancheAge
    FROM [Age Usagers] INNER JOIN Courses ON [Age Usagers].[N° Usager] = Courses.[N° Usager]
    WHERE (((Courses.[N° Course]) Between 2017000000 And 2017999999) AND ((Courses.[N° Chauffeur])<>10));

    Lorsque j'exécute la requête, access2007 me signale :
    Erreur de syntaxe (opérateur absent) dans l'expression "Courses.[Date de la course]
    switch(
    age<18, "moins de 18 ans",
    age>18 AND <20, "entre 25 et 44 ans",
    age>20 AND <30, "entre 20 et 30 ans",
    age>30 AND <40, "entre 30 et 40 ans",
    age>40 AND <50, "entre 40 et 50 ans",
    age>50 AND <60, "entre 50 et 60 ans",
    Quelqu'un peut-il m'aider pour résoudre la requête ?
    Je vous remercie d'avance.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    bonjour,
    il manque une virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Courses.[Date de la course] ,
    switch(

  3. #3
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calcul par tranches d'âge d'usagers d'un service social.
    Merci tee_grandbois
    J'ai ajouté la virgule après date de la course
    Lorsque j'exécute access me signale :
    Citation Envoyé par Access
    opérateur absent dans l'expression "switch(
    age<18, "moins de 18 ans",
    age>18 AND <20, "entre 25 et 44 ans",
    age>20 AND <30, "entre 20 et 30 ans",
    age>30 AND <40, "entre 30 et 40 ans",
    age>40 AND <50, "entre 40 et 50 ans",
    age>50 AND <60, "entre 50 et 60 ans",
    age>60 AND <70, "entre 60 et 70 ans",
    age>70 AND <80, "entre 70 et 80 ans",

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    il manque age après chaque AND

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    aussi, cette comparaison renvoie un faux résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    age>18 AND age<20, "entre 25 et 44 ans",

  6. #6
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut
    Merci tee_grandbois
    Grâce à toi, je vais pouvoir réaliser cette statistique.
    Je suppose que je vais pouvoir faire un regroupement sur la requête et à partir de celle ci faire une requête avec compte sur les tranches d'age.
    Merci encore

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    Grâce à toi, je vais pouvoir réaliser cette statistique.
    non, c'est f-leb qui t'avais déjà donné le bon code ici.
    Et n'oublie pas le bouton

  8. #8
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Pour éviter des faire autant de bornage sur les âges vous pourriez utiliser la fonction partition !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calcul par tranches d'âge.
    Bonjour,
    En vue de faciliter le travail de la secrétaire de l'ASBL pour la réalisation des statistiques à présenter lors de l'Assemblée Générale annuelle, j'ai créé un formulaire avec des boutons. Ceux-ci ouvrent les requêtes sollicitées. J'ai également été amené à modifier la requête, réalisant que les renseignements n'étaient pas toujours fournis correctement. Voici la requête actuelle :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Usagers.Sexe, [Age Usagers Fonction Usagers Présent].Age,
    age<18, "moins de 18 ans",
    age>18 AND age<20, "entre 18 et 20 ans",
    age>20 AND age<30, "entre 20 et 30 ans",
    age>30 AND age<40, "entre 30 et 40 ans",
    age>40 AND age<50, "entre 40 et 50 ans",
    age>50 AND age<60, "entre 50 et 60 ans",
    age>60 AND age<70, "entre 60 et 70 ans",
    age>70 AND age<80, "entre 70 et 80 ans",
    age>80 AND age<90, "entre 80 et 90 ans",
    age>90 AND age<100, "entre 90 et100 ans",
    age>=100, "100 ans et plus" AS trancheAge
    FROM ((Usagers INNER JOIN [Age Usagers Fonction Usagers Présent] ON Usagers.[N° Usager] = [Age Usagers Fonction Usagers Présent].[N° Usager]) RIGHT JOIN Courses ON Usagers.[N° Usager] = Courses.[N° Usager]) INNER JOIN [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] ON Courses.[N° Course] = [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course]
    WHERE (((Courses.[Date de la course]) Is Not Null))
    ORDER BY Usagers.Sexe;

    Lorsque j'exécute la requête, le message d'erreur suivant apparaît
    Expression JOIN non supportée
    Est-ce que quelqu'un veut bien m'aider à résoudre ce problème.
    Je reste à votre disposition pour tout information complémentaire et vous remercie d'avance.

  10. #10
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Difficile de comprendre les relations entre tes tables sans l'image du MCD.
    D'autre part, il est vivement recommandé de mettre des noms sans espace ni accents ni caractères spéciaux.

    Peux-tu mettre une image de ton modèle relationnel

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    bonjour,
    en plus du MCD, il faudrait commencer par donner la requête correcte (déjà corrigée précédemment en théorie) : il manque le Switch pour les tranches d'âges et en plus les bornes sont fausses age>18 AND age<20 ne concernera que 19, jamais 18 et 20 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Switch(age between 18 AND  20, "entre 18 et 20 ans",
    age between 21 AND 30, "entre 21 et 30 ans",
    age between 31 AND 40, "entre 31 et 40 ans",
    age between 41 AND 50, "entre 41 et 50 ans",
    age between 51 AND 60, "entre 51 et 60 ans",
    age between 61 AND 70, "entre 61 et 70 ans",
    age between 71 AND 80, "entre 71 et 80 ans",
    age between 81 AND 90, "entre 81 et 90 ans",
    age between 91 AND 100, "entre 91 et 100 ans",
    age >100, "101 ans et plus") AS trancheAge
    Le Right Join, qui est la cause de l'erreur, n'est pas appropriée non plus, commence par l'enlever pour qu'on y comprenne quelque chose

  12. #12
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculs par tranches d'âge
    Bonsoir tee_grandbois. Je suis très content que tu m'aides pour résoudre la rédaction de ma requête et je m'excuse pour les erreurs commises en voulant améliorer la précédente et pour laquelle tu m'avais prêté ton concours. Cette fois-ci je n'ai toujours pas réussi. Voici le code :

    Code SQL : 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
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Usagers.[N° Usager], [Age Usagers Fonction Usagers Présent].Sexe, [Age Usagers Fonction Usagers Présent].Age,
    Switch(age<18, "moins de 18 ans",
    age between 18 AND  20, "entre 18 et 20 ans",
    age between 21 AND 30, "entre 21 et 30 ans",
    age between 31 AND 40, "entre 31 et 40 ans",
    age between 41 AND 50, "entre 41 et 50 ans",
    age between 51 AND 60, "entre 51 et 60 ans",
    age between 61 AND 70, "entre 61 et 70 ans",
    age between 71 AND 80, "entre 71 et 80 ans",
    age between 81 AND 90, "entre 81 et 90 ans",
    age between 91 AND 100, "entre 91 et 100 ans",
    age >100, "101 ans et plus") AS trancheAge
    FROM (Usagers (Courses [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] ON Courses.[N° Course] = [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course]) ON Usagers.[N° Usager] = Courses.[N° Usager]) [Age Usagers Fonction Usagers Présent] ON Usagers.[N° Usager] = [Age Usagers Fonction Usagers Présent].[N° Usager]
    GROUP BY [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Usagers.[N° Usager], [Age Usagers Fonction Usagers Présent].Sexe, [Age Usagers Fonction Usagers Présent].Age
    HAVING (((Courses.[Date de la course]) Is Not Null))
    ORDER BY [Age Usagers Fonction Usagers Présent].Sexe, [Age Usagers Fonction Usagers Présent].Age;

    Lorsque j'exécute la requête, le message suivant apparaît :

    Erreur de syntaxe dans l'opération JOINPuis-je me permettre de solliciter encore ton concours.
    En te remerciant

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    la requête est inutilisable: pourquoi avoir enlevé tous les INNER JOIN ?
    il suffisait juste de remplacer le RIGHT JOIN par INNER JOIN et ensuite utiliser le QBE (Query By Example) qui est l'interface de création des requêtes qui est plus pratique pour placer les jointures (représentées par les fils entre les tables):

    Nom : _1.JPG
Affichages : 2057
Taille : 106,6 Ko

  14. #14
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculs par tranches d'âge
    Merci tee_grandbois. La requête fonctionne bien. J'aimerais avoir un tri croissant concernant les tranches d'âge et connaître le nombre d'usagers pour chaque tranche.
    Je me permets, pour votre information, ci-dessous le QBE (Query By Example) de l'interface de création de la requête "Age Usagers Fonction Usagers Présent" et son code SQL.

    Nom : Screen Shot 06-12-19 at 09.56 AM.PNG
Affichages : 1992
Taille : 259,5 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Usagers.[N° Usager], Usagers.[Date décès], Usagers.Nom, Usagers.Prénom, Usagers.Sexe, Usagers.Date_naissance, CalculAge([Usagers.Date_naissance],Date()) AS Age, Usagers.Utilisateur
    FROM Usagers
    WHERE (((Usagers.[Date décès]) Is Null) AND ((Usagers.Utilisateur)="OUI"))
    ORDER BY Usagers.Sexe, Usagers.Date_naissance DESC;
    Voulez-vous bien m'aider s'il vous plait. D'avance je te remercie.
    Dans d'autres requêtes que j'ai faites dans la même base de données, j'en faisais une première avec regroupement et une seconde émanant de la première avec un compte.

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    La requête fonctionne bien. J'aimerais connaître le nombre d'usagers pour chaque tranche d'âge.
    Veux-tu bien m'aider s'il vous plait. D'avance je te remercie.
    si elle fonctionne, peux-tu poster la dernière version de la requête ?
    n'oublie pas les balises de code (icône # du menu Message)

  16. #16
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculspar tranches d'âge
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Usagers.[N° Usager], Usagers.Nom, Usagers.Prénom, Usagers.Sexe, [Age Usagers Fonction Usagers Présent].Age, Switch(age<18,"moins de 18 ans",age Between 18 And 20,"entre 18 et 20 ans",age Between 21 And 30,"entre 21 et 30 ans",age Between 31 And 40,"entre 31 et 40 ans",age Between 41 And 50,"entre 41 et 50 ans",age Between 51 And 60,"entre 51 et 60 ans",age Between 61 And 70,"entre 61 et 70 ans",age Between 71 And 80,"entre 71 et 80 ans",age Between 81 And 90,"entre 81 et 90 ans",age Between 91 And 100,"entre 91 et 100 ans",age>100,"101 ans et plus") AS trancheAge
    FROM [Age Usagers Fonction Usagers Présent] INNER JOIN (Usagers INNER JOIN ([Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] INNER JOIN Courses ON [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course] = Courses.[N° Course]) ON Usagers.[N° Usager] = Courses.[N° Usager]) ON [Age Usagers Fonction Usagers Présent].[N° Usager] = Usagers.[N° Usager]
    WHERE (((Courses.[Date de la course]) Is Not Null))
    ORDER BY Usagers.Sexe;

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    bonjour,
    essaie ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Usagers.Sexe, Switch(age<18,"moins de 18 ans",age Between 18 And 20,"entre 18 et 20 ans",age Between 21 And 30,"entre 21 et 30 ans",age Between 31 And 40,"entre 31 et 40 ans",age Between 41 And 50,"entre 41 et 50 ans",age Between 51 And 60,"entre 51 et 60 ans",age Between 61 And 70,"entre 61 et 70 ans",age Between 71 And 80,"entre 71 et 80 ans",age Between 81 And 90,"entre 81 et 90 ans",age Between 91 And 100,"entre 91 et 100 ans",age>100,"101 ans et plus") AS trancheAge
    , Count([Usagers].[N° Usager]) AS CpteParTrchAge
    FROM [Age Usagers Fonction Usagers Présent] INNER JOIN (Usagers INNER JOIN ([Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] INNER JOIN Courses ON [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course] = Courses.[N° Course]) ON Usagers.[N° Usager] = Courses.[N° Usager]) ON [Age Usagers Fonction Usagers Présent].[N° Usager] = Usagers.[N° Usager]
    WHERE (((Courses.[Date de la course]) Is Not Null))
    GROUP BY [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Usagers.Sexe, Switch([age]<18," moins de 18 ans",[age] Between 18 And 20,"entre 18 et 20 ans",[age] Between 21 And 30,"entre 21 et 30 ans",[age] Between 31 And 40,"entre 31 et 40 ans",[age] Between 41 And 50,"entre 41 et 50 ans",[age] Between 51 And 60,"entre 51 et 60 ans",[age] Between 61 And 70,"entre 61 et 70 ans",[age] Between 71 And 80,"entre 71 et 80 ans",[age] Between 81 And 90,"entre 81 et 90 ans",[age] Between 91 And 100,"entre 91 et 100 ans",[age]>100,"101 ans et plus")
    ORDER BY Usagers.Sexe;

  18. #18
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculs par tranches d'âge
    Avec le nouveau code lors de son exécution, j'obtiens le message d'erreur suivant :
    Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée «*Switch(age<18,"moins de 18 ans",age Between 18 And 20,"entre 18 et 20 ans",age Between 21 And 30,"entre 21 et 30 ans",age Between 31 And 40,"entre 31 et 40 ans",age Between 41 And 50,"entre 41 et 50 ans",age Between 51 And 60,"entre 51 et 60 ans",age Betw*» comme partie de la fonction d'agrégat.
    Que puis-je faire afin que la requête s'exécute correctement.

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 859
    Points : 14 977
    Points
    14 977
    Par défaut
    oui, désolé, il faut enlever l'espace se trouvant juste avant moins dans " moins de 18 ans" dans le GROUP BY:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Usagers.Sexe, Switch([age]<18,"moins de 18 ans",[age] Between 18 And 20,"entre 18 et 20 ans",[age] Between 21 And 30,"entre 21 et 30 ans",[age] Between 31 And 40,"entre 31 et 40 ans",[age] Between 41 And 50,"entre 41 et 50 ans",[age] Between 51 And 60,"entre 51 et 60 ans",[age] Between 61 And 70,"entre 61 et 70 ans",[age] Between 71 And 80,"entre 71 et 80 ans",[age] Between 81 And 90,"entre 81 et 90 ans",[age] Between 91 And 100,"entre 91 et 100 ans",[age]>100,"101 ans et plus")

  20. #20
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2014
    Messages : 58
    Points : 18
    Points
    18
    Par défaut Calculs par tranches d'âge
    Bonjour tee_grandbois
    En utilisant ton dernier code que voici :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Usagers.Sexe, [Age Usagers Fonction Usagers Présent].Age, Switch(age<18,"moins de 18 ans",age Between 18 And 20,"entre 18 et 20 ans",age Between 21 And 30,"entre 21 et 30 ans",age Between 31 And 40,"entre 31 et 40 ans",age Between 41 And 50,"entre 41 et 50 ans",age Between 51 And 60,"entre 51 et 60 ans",age Between 61 And 70,"entre 61 et 70 ans",age Between 71 And 80,"entre 71 et 80 ans",age Between 81 And 90,"entre 81 et 90 ans",age Between 91 And 100,"entre 91 et 100 ans",age>100,"101 ans et plus") AS trancheAge
    , Count([Usagers].[N° Usager]) AS CpteParTrchAge
    FROM [Age Usagers Fonction Usagers Présent] INNER JOIN (Usagers INNER JOIN ([Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] INNER JOIN Courses ON [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course] = Courses.[N° Course]) ON Usagers.[N° Usager] = Courses.[N° Usager]) ON [Age Usagers Fonction Usagers Présent].[N° Usager] = Usagers.[N° Usager]
    WHERE (((Courses.[Date de la course]) Is Not Null))
    GROUP BY [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Usagers.Sexe, Switch([age]<18," moins de 18 ans",[age] Between 18 And 20,"entre 18 et 20 ans",[age] Between 21 And 30,"entre 21 et 30 ans",[age] Between 31 And 40,"entre 31 et 40 ans",[age] Between 41 And 50,"entre 41 et 50 ans",[age] Between 51 And 60,"entre 51 et 60 ans",[age] Between 61 And 70,"entre 61 et 70 ans",[age] Between 71 And 80,"entre 71 et 80 ans",[age] Between 81 And 90,"entre 81 et 90 ans",[age] Between 91 And 100,"entre 91 et 100 ans",[age]>100,"101 ans et plus")
    ORDER BY Usagers.Sexe;
    j'obtiens le message suivant :
    "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée « Age » comme une partie de la fonction d'agrégat."
    Je me permets de vous montrer une autre double requête que j'ai réalisée afin de vous montrer ce que je souhaite obtenir avec la requête ci-dessus.
    Cela concerne le type de service demande.
    Première requête : regroupement
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Courses.[Type de service], Courses.[Date de la course]
    FROM Courses INNER JOIN [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee] ON Courses.[N° Course] = [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course]
    GROUP BY [Stat 091 Courses Ponctuelles Modif Criteres Recherche Annee].[N° Course], Courses.[Date de la course], Courses.[Type de service], Courses.[Date de la course]
    HAVING (((Courses.[Date de la course]) Is Not Null))
    ORDER BY Courses.[Type de service];
    Deuxième requête : compte
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Stat 11 Courses Ponctuelles Type de Service Regroupement].[Type de service], Count([Stat 11 Courses Ponctuelles Type de Service Regroupement].[Date de la course]) AS [CompteDeDate de la course]
    FROM [Stat 11 Courses Ponctuelles Type de Service Regroupement]
    GROUP BY [Stat 11 Courses Ponctuelles Type de Service Regroupement].[Type de service];
    En espérant que ces explications puissent te servir afin de m'aider dans ma demande.
    D'avance je te remercie.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Calculer le nombre d'usagers par tranche d'âge.
    Par Liegecam64 dans le forum VBA Access
    Réponses: 11
    Dernier message: 08/06/2018, 09h10
  2. [XL-2007] Calcul des droits par tranche et suivant montant de la transaction.
    Par Abdelinho dans le forum Excel
    Réponses: 5
    Dernier message: 18/03/2011, 19h25
  3. [XL-2003] calcul par tranche de 10jours
    Par seychelles85 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2010, 15h49
  4. tranche de calcul par date
    Par benvanbelgie dans le forum SAS Base
    Réponses: 3
    Dernier message: 12/05/2010, 18h51
  5. Calcul d'heures par tranche horaire
    Par A0080 dans le forum Excel
    Réponses: 11
    Dernier message: 05/03/2008, 15h19

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