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 :

Requête avec comptage et à plusieurs regroupements! [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut Requête avec comptage et à plusieurs regroupements!
    Bonjour à tous,

    Je ne sais même pas par où commencer. En fait, je n'ai jamais été confronté à une requête aussi compliquée (sur des tranches d'âges, ni avec plusieurs regroupement). Bon, je vous explique : Je souhaiterai afficher par nationalité, le nombre d'élèves par tranche d'âge et par sexe pour chaque nationalité. Les tranches d'âges sont au nombre de 3. Tout d'abord les -10 ans, de 10 à 15 ans et enfin la dernière tranche concerne les 15+. J'ai une table qui contient les élèves avec leur age et une autre qui contient les nationalités. Dois-je créer une table pour les tranches d'âges? Quelqu'un saurait-il comment dois-je procéder s'il vous plaît?

    tableeleve(numeleve,nomeleve,age,sexe,numnationalite)
    tablenationalite(numnationalite,nationalite)

    Merci d'avance de me rendre le sourire.

    Cordialement.

  2. #2
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    tu dois pouvoir essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    nationalite,
    CASE WHEN age < 10 then '10-'
         WHEN age >=10 AND age <=15 THEN '10-15'
         WHEN age >15 THEN '15+' END as tranche_age,
    sexe,
    count(numeleve)
    FROM tablenationalite 
    JOIN tableeleve ON tableeleve.numnationalite = tablenationalite.numnationalite
    GROUP BY 1,2,3
    ORDER BY 1

  3. #3
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut
    Bonne année et heureuse année 2010 say et Merci pour ton aide.

    Concernant mon problème, j'ai finalement créé une table tabletranche dans laquelle j'ai mis comme champs les différentes tranches. Comme ça à chaque fois que j'enregistre un élève je vérifie de quelle tranche il fait partie puis je remplace le contenu de la tranche à laquelle il appartient par 1 sinon par 0. Je pensais qu'en passant par cette méthode tout serait plus simple puisque "j'économise" la requête sur le sexe. Mais je n'arrive pas à les compter le nombre de 1 par tranche. Ceci dans le but d'avoir des statistiques.

    tabletranche(numtranche,numeleve,numnationalite,nationalite,m3m,39m,1015m,plus15m,m3f,39f,1015f,plus15f)
    tableeleve(numeleve,nomeleve,age,sexe,numnationalite)
    tablenationalite(numnationalite,nationalite)

    m3m = élève de moins de 3 ans de sexe masculin
    39m = élève de 3 à 9 ans de sexe masculin
    1015m = élève de 10 à 15 ans de sexe masculin
    plus15m = élève de plus de 15 ans de 3 ans de sexe masculin

    m3f = élève de moins de 3 ans de sexe féminin
    39f = élève de 3 à 9 ans de sexe féminin
    1015f = élève de 10 à 15 ans de sexe féminin
    plus15f = élève de plus de 15 ans de 3 ans de sexe féminin

    Je souhaiterai savoir à présent quelle requête pourrait me permettre d'avoir par nationalité, le nombre d'élèves par tranche d'âge.

    NB : J'utilise Access 2003, donc je ne pense pas que les CASE marchent avec.

    Aidez-moi je vous en prie.

    Merci d'avance.

    Cordialement.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    TRANSFORM Count(tableeleve.numeleve) AS CompteDenumeleve
    SELECT tablenationalite.nationalité, Partition([age],10,15,6) AS tranche
    FROM tableeleve INNER JOIN tablenationalite ON tableeleve.numnationalité = tablenationalite.numnationalite
    GROUP BY tablenationalite.nationalité, Partition([age],10,15,6)
    ORDER BY tablenationalite.nationalité, Partition([age],10,15,6), tableeleve.sexe
    PIVOT tableeleve.sexe;

  5. #5
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut
    Bonjour random et Merci pour ton aide.

    J'ai pu trouver la solution à mon problème (même si j'avoue qu'elle n'est pas du tout optimisée). Je ne savais pas qu'on pouvait utiliser Transform, Partition et Pivot dans une requête sql (pour Access en plus). Peux-tu m'expliquer ta requête s'il te plaît. Elle m'intéresse vraiment. J'ai vraiment beaucoup à apprendre . Merci pour tout et prends bien soin de toi.

    Cordialement.

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

Discussions similaires

  1. Requête de regroupement avec comptage
    Par guepard25 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/01/2015, 11h11
  2. [XL-2007] Problème Requête avec Jointure de plusieurs Tables VBA
    Par fleur_d_eden dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2012, 11h03
  3. [AC-2003] Requête avec comptage
    Par ovett dans le forum Access
    Réponses: 0
    Dernier message: 08/06/2009, 17h05
  4. Requête avec comptage
    Par Arsene12 dans le forum WinDev
    Réponses: 4
    Dernier message: 16/04/2008, 14h26
  5. Requête avec des tables de plusieurs bases
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h56

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