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 MySQL Discussion :

Autre façon d'écrire COUNT(CASE WHEN)


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 24
    Par défaut Autre façon d'écrire COUNT(CASE WHEN)
    Bonjour,
    J'aimerais bien savoir si il y a une autre manière d'écrire la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT count(CASE WHEN label='test' THEN 1 END) as nb_test
    from sil_test
    sans utiliser le CASE WHEN

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Par défaut
    Salut,

    Au lieu d'utiliser le CASE WHEN tu mets ta condition dans le Where :

    Tout simplement!

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 24
    Par défaut
    dans ma requete je fais déjà un select de label apres un autre select du count de label ou le non du label est egal à test donc ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT label ,  count(CASE WHEN label='test' THEN 1 END) AS nb_test
    FROM sil_test

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 453
    Par défaut
    Bonjour,
    Quel SGBD ?
    Quel est le problème avec CASE() ?

    Tatayo.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 24
    Par défaut
    MYSQL, je veux l'écrire d'une autre façon sans utiliser CASE WHERE, est ce que c'est possible?

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Citation Envoyé par bella125 Voir le message
    MYSQL, je veux l'écrire d'une autre façon sans utiliser CASE WHERE, est ce que c'est possible?
    Oui c'est possible (Après tout, même quand on a un marteau à portée de main, rien n’empêche d'enfoncer un clou avec une pierre...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT 
        label ,  
        (SELECT count(*) FROM sil_test WHERE label='test' ) AS nb_test
    FROM sil_test
    Ce sera certainement moins performant...

    Je me pose la même question que tatayo :
    Quel est le problème avec CASE

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT label ,  count(label) AS nb_test FROM sil_test WHERE label = 'test' GROUP BY label;

  8. #8
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 24
    Par défaut
    Je n'ai pas du tout les mêmes résultats avec les deux requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
                         label ,date,count(id) as nb, count(CASE WHEN label='test' THEN 1 END) as nb_test
    					  from
    					   sil_test,sil_data
    					  where
    					   sil_data.id_t=sil_data.id_t
     
                         GROUP by
                         label, date
    et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
                         label ,date,count(id) as nb, count(label) as nb_test
    					  from
    					   sil_test,sil_data
    					  where
    					   label= "test" and
    					   sil_data.id_t=sil_data.id_t
     
                         GROUP by
                         label, date

  9. #9
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Il me semble que c'est ce que fait la fonction MySQL IF(), qui n'est qu'un ersatz de (CASE WHEN THEN ELSE END.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUM(IF(label='test', 1,0)) AS nb_test
    FROM sil_test
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. Requete select CASE WHEN COUNT
    Par dadateite dans le forum Langage SQL
    Réponses: 11
    Dernier message: 03/04/2014, 11h01
  2. Count sur plusieurs case when
    Par fozzeuh dans le forum SQL
    Réponses: 5
    Dernier message: 15/05/2013, 11h01
  3. CASE WHEN + COUNT
    Par nicerico dans le forum MySQL
    Réponses: 5
    Dernier message: 24/03/2009, 06h58
  4. Une autre façon d'écrire ma requête
    Par cmako dans le forum Développement
    Réponses: 7
    Dernier message: 26/02/2009, 16h16
  5. [SQL] performances Decode ou Case when ?
    Par Yorglaa dans le forum Oracle
    Réponses: 8
    Dernier message: 01/10/2004, 15h50

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