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 :

compter le nombre d'enregistrement sur différents critères


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut compter le nombre d'enregistrement sur différents critères
    Bonjour,
    j'ai un pb pour obtenir le nombre d'enreg sur plusieurs catégories.
    voici la structure de la table
    ID,nom, pays, ville, age, sexe.


    je dois effectuer un select sur Pays and ville and age and sexe
    Mais avant d'afficher le resultat je dois dans un premier temps je dois afficher
    le nombre d'enregistrement pour chaque champs

    France(10) | Paris (5) | 20 - 30 ans (7) | homme(8)
    Belgique(2) | Lille (2) | 30 - 40 and (5) | femme (4)
    | Marseille (3) |
    | bruxelles (2) |

    Comment arriver à résultat sachant que la base sera assez importante et aussi en évitant de faire plusieurs fois le même parcours de la base

    je sais effectuer un select count group by pour un enreg mais là je sèche

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Je ne sais pas si cela correspond à votre besoin mais vous pouvez tenter ceci : (fonctionne avec SQL Server 2005 ou plus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    	DISTINCT
    	pays,
    	COUNT(pays) OVER (PARTITION BY pays) AS nb_pays,
    	ville,
    	COUNT(ville) OVER (PARTITION BY pays, ville) AS ville,
    	age,
    	COUNT(age) OVER (PARTITION BY pays, ville, age) AS nb_age,
    	sexe,
    	COUNT(sexe) OVER (PARTITION BY pays, ville, age, sexe) AS nb_sexe
    FROM t;
    ++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    je pense que l'exemple doit correspondre à ce que je recherche mais cela ne fonctionne pas sous mysql.

    Quelqu'un a t il une autre solution

    Merci

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Effectivement, COUNT OVER PARTITION n'existe pas sous MySQL.

    Malheureusement, votre demande correspond à plusieurs calculs différents, compliqués encore par le fait que vous demandez un comptage par transhe d'âge et non pas directement par âge.

    Si vous exploitez ensuite les données dans un logiciel que vous développez, le plus simple est encore de faire un GROUP BY général et de faire les additions de sous-totaux supplémentaires dans le langage de programmation dudit logiciel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT sexe, pays, ville, age / 10 AS dizaine_age, COUNT(*) AS nb_dizaine_age
    FROM la_table
    GROUP BY sexe, pays, ville, age / 10
    Au logiciel ensuite par le mécanisme des boucles et des tests de changement de valeur d'additionner les sous-totaux car la plus petite division est probablement la transche d'âge.

    Voilà l'idée, à vous de l'exploiter.

Discussions similaires

  1. Compter des enregistrements selon différents critères
    Par nlbmoi dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 10/07/2015, 08h58
  2. Réponses: 10
    Dernier message: 20/07/2012, 08h48
  3. compter le nombre d'enregistrements différents
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/02/2008, 10h33
  4. Compter le nombre de 'Oui' sur un enregistrement
    Par xianxian620 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2006, 23h18
  5. [SQL][ACCESS]Compter le nombres d'enregistrement dans deux..
    Par pc152 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/06/2004, 12h30

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