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

MS SQL Server Discussion :

Grouper plusieurs count()


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut Grouper plusieurs count()
    Salut,

    J'ai une requête group by sur plusieurs tables dans laquelle j'aimerais compter plusieurs caractéristiques différentes des champs. En particulier j'aimerais pour un même champ connaître à la fois le nombre total d'enregistrements et le nombre d'enregistrements valant 0 ou null.

    Actuellement j'utilise 1 requete différente pour chaque count, presque identique a l'exception du where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select count(champ)
    from ....
    where ....
    group by ...
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select count(champ)
    from ....
    where (....) and (champ is null or champ = 0)
    group by ...
    Sachant que je dois faire le calcul pour 4 champs, ça augmente pas mal le temps d'exécution total

    Existe-t-il une solution pour factoriser ces requêtes ?

    Merci.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT COUNT(*),
           SUM(CASE WHEN (Champ1  = 0 OR champ IS NULL) THEN 1 ELSE 0 END),
           SUM(CASE WHEN Champ2 = 'Marcel' THEN 1 ELSE 0 END)
    FROM ...
    WHERE ...
    GROUP BY ...

  3. #3
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut
    Merci !

    Ca marche parfaitement. J'avais cherché quelquechose avec IF, mais je ne connaissais pas CASE.

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

Discussions similaires

  1. plusieurs count dans la même requete
    Par lmorali dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/05/2007, 10h17
  2. Plusieurs Count dans mon select
    Par thomfort dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/03/2007, 17h39
  3. Réponses: 8
    Dernier message: 16/02/2007, 12h53
  4. plusieurs COUNT sur une seule table avec conditions différentes
    Par dingoth dans le forum Administration
    Réponses: 9
    Dernier message: 20/12/2006, 10h13
  5. PLusieurs COUNT dans une requete?
    Par haludo dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2006, 10h38

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