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 :

Comptage par type sur la même ligne


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Points : 103
    Points
    103
    Par défaut Comptage par type sur la même ligne
    Bonjour,

    J'ai une table qui trace les accidents survenus par type d'accident, par date et par site.

    ID DATE SITE TYPE
    6 2010-12-13 NK 2
    7 2010-12-14 VK 2
    8 2010-12-15 QN 2
    9 2010-12-15 VK 1
    10 2010-12-15 FS 2
    11 2010-12-16 WU 2
    13 2010-12-14 VK 1

    Les types 1 sont les accidents avec arrêt de travail, les type 2 sans arrêt de travail

    Je veux faire une requête qui me donne par date et par site sur une même ligne le nombre d'accident avec arrêt et le nombre d'accident sans arrêt :
    DATE SITE AAA ASA
    2010-12-13 NK 0 1
    2010-12-14 VK 1 1
    2010-12-15 QN 0 1
    2010-12-15 VK 1 0
    2010-12-15 FS 0 1
    2010-12-16 WU 0 1

    Mais je n'y arrive pas : soit je fais la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT COUNT(ID) AS AAA, 0 as ASA
           ,DATE ,SITE
        FROM FAIT_ACCIDENT
      WHERE TYPE = 1
      GROUP BY SITE, DATE
      UNION
      SELECT 0 as AAA, COUNT(ID) AS ASA
           ,DATE ,SITE
           FROM FAIT_ACCIDENT
      WHERE TYPE= 2
      GROUP BY SITE, DATE
    mais ça me renvoie 2 lignes distinctes pour un même site et même date lorsque j'ai les 2 types d'accident (par exemple site VK le 14/12/2010)

    soit la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT DATE, SITE
               ,(SELECT COUNT(ID) 
               FROM FAIT_ACCIDENT as FF1
      WHERE FF1.TYPE = 1 AND FF1.SITE = SITE AND FF1.DATE = DATE
     ) as AAA
      ,(SELECT COUNT(ID) 
               FROM FAIT_ACCIDENT as FF2
      WHERE TYPE = 2 AND FF2.SITE = SITE AND FF2.DATE = DATE
      ) as ASA
     
      FROM FAIT_ACCIDENT
     
      GROUP BY SITE, DATE
    celle ci me génère bien une seule ligne par date et par site mais les nombres d'accidents sont sommés sur chaque ligne (j'ai sur chaque ligne 2 AAA et 5 ASA).

    help ! je m'en sors pas. (J'ai pensé peut être à faire 2 vue et fusionner ensuite les 2 vues par une jointure mais ça me parait bien compliqué ) Comment faire svp ? merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select date, site, sum(case type when 1 then 1 else 0 end) as aaa,
    sum(case type when 2 then 1 else 0 end) as asa
    from FAIT_ACCIDENT
    group by date, site

  3. #3
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Points : 103
    Points
    103
    Par défaut
    Super simple et efficace !
    merci beaucoup

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2015, 20h19
  2. Centrer une image par rapport au texte sur la même ligne
    Par Lonlie dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 6
    Dernier message: 16/09/2008, 17h09
  3. Mettre 2 images sur la même ligne et les centrer par rapport au texte
    Par Lonlie dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 04/07/2008, 14h47
  4. 2 éléments sur une même ligne
    Par ben_iap dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 17h27
  5. 2 recordset sur la même ligne
    Par gunnm dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/08/2004, 20h36

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