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'occurence


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut Compter le nombre d'occurence
    Bonjour,

    je dois pas être réveillé et avoir le cerveau embrumé mais j'ai un petit problème

    Voici ce que je souhaite faire.
    J'ai la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TABLE MESURE 
    b_entity_code
    bucket_code
    market_code
    m_entity_code
    indicator_code
    value
    Les codes sont des entier qui référencent des tables de dimension. Ma table mesure est une table de fait

    Mon indicator_code, market_code, bucket_code et m_entity_code sont connus.
    Je cherche donc pour chaque b_entity_code le nombre de ligne par valeur.

    Mes value peuvent avoir comme valeur 1, 2 ou 3 ou la ligne peut ne pas exister.

    Voici ma requête actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select	
    case when M.MEASURE_VALUE is null then count(*) end as nb0,
    case when M.MEASURE_VALUE = 1 then count(*) end as nb1,
    case when M.MEASURE_VALUE = 2 then count(*) end as nb2,
    case when M.MEASURE_VALUE = 3 then count(*) end as nb3
    FROM BASE_ENTITIES BE LEFT OUTER JOIN  MEASURE  M ON BE.B_ENTITY_CODE = M.B_ENTITY_CODE AND M.INDICATOR_CODE =  1856 AND M.MARKET_CODE =  5 AND M.M_ENTITY_CODE =  968 AND M.BUCKET_CODE =  62 
    group by M.MEASURE_VALUE
    Ca me permet de récupérer toutes mes base_entity même si la ligne dans mesure n'existe pas.
    Seulement j'aimerais récupérer les count sur une seule ligne alors qu'ici je récupère 4 lignes (une pour null, une pour 1, une pour 2, une pour 3)


    Ou alors faut-il que je passe par des subselect dans ma requête?

    merci d'avance
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    peux tu nous donner ce que te retourne actuellement ta requête et aussi le retour que tu aimerais avoir?

    merci

  3. #3
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Mon retour actuel est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    150  null   null    null
    null    1    null    null
    null  null     1     null
    null  null   null     1
    et j'aimerais un résultat du type

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    enlève le "group by"

  5. #5
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    J'avais essayé.
    Si j'enlève le group by, SQL Server me dit que ma colonne M.MEASURE_VALUE doit être dans le group by
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    bon bah on change un peu la requête alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT	
    count(case when M.MEASURE_VALUE IS NULL then 1 end) AS nb0,
    count(case when M.MEASURE_VALUE = 1 then 1 end) AS nb1,
    count(case when M.MEASURE_VALUE = 2 then 1 end) AS nb2,
    count(case when M.MEASURE_VALUE = 3 then 1 end) AS nb3
    FROM BASE_ENTITIES BE 
    LEFT OUTER JOIN  MEASURE  M 
    ON BE.B_ENTITY_CODE = M.B_ENTITY_CODE AND M.INDICATOR_CODE =  1856 AND M.MARKET_CODE =  5 AND M.M_ENTITY_CODE =  968 AND M.BUCKET_CODE =  62

  7. #7
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Arf oui merci bien !
    c'est ce que j'avais sur le bout de la langue
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

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

Discussions similaires

  1. [RegEx] Compter le nombre d'occurences d'un mot
    Par Shuny dans le forum Langage
    Réponses: 10
    Dernier message: 19/12/2009, 18h58
  2. Compter le nombre d'occurences d'un mot dans un texte
    Par AlexandraS dans le forum Langage
    Réponses: 13
    Dernier message: 26/03/2008, 09h12
  3. Compter le nombre d'occurence dans une chaine
    Par shirya dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2007, 20h39
  4. [Tableaux] compter le nombre d'occurence
    Par Joe Le Mort dans le forum Langage
    Réponses: 8
    Dernier message: 07/12/2006, 16h08
  5. Réponses: 8
    Dernier message: 18/01/2005, 10h58

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