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

SQL Oracle Discussion :

Comment faire le rapport de deux count ?


Sujet :

SQL Oracle

  1. #1
    Membre averti

    Homme Profil pro
    informatique
    Inscrit en
    Avril 2013
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 280
    Points : 406
    Points
    406
    Billets dans le blog
    1
    Par défaut Comment faire le rapport de deux count ?
    bonjour, certaines choses paraissent simple mais je galère cette requete.faire le rapport de 2 count.
    voici ma 1ère requetes count.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count (REQUEST_USR_CREATE_ID)  from  pur_request
    et jobtiens comme resulltat:12080
    voici ma 2ème requetes count
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select count(distinct request_id) DA_cmde from pur_request req
    where order_l_id is not null
    j'obtiens 5995
    quand je combine pour avoir le rapport des 2 counts.voici la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select count (REQUEST_USR_CREATE_ID)/
    (select count(distinct request_id) da_cmde from pur_request req
    where order_l_id is not null 
    ) from pur_request p
    voic l erreur que j'ai la fonction de groupe ne porte pas sur un groupe simple
    00937. 00000 - "not a single-group group function". comment faire le rapport de count

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 302
    Points : 39 647
    Points
    39 647
    Billets dans le blog
    9
    Par défaut
    il faut faire une requete de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select rq1.cpt1 / rq2.cpt2
    from (select count (REQUEST_USR_CREATE_ID) as cpt1 from  pur_request) as rq1
        ,(select count(distinct request_id) as cpt2 from pur_request where order_l_id is not null) as rq2
    En ajoutant un case ... when pour gérér le diviseur null ou égal à zéro

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(request_usr_create_id)
         / nullif(count(distinct case when order_l_id is not null then request_id end), 0) as rapport
      from pur_request req;

  4. #4
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Brésil

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Vous pouvez essayer aussi ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select COUNT(1)
          / COUNT(DISTINCT DECODE(s.order_l_id,NULL,NULL,s.request_id))
      from pur_request s;
    Le COUNT(REQUEST_USR_CREATE_ID) a le même sens que COUNT(1) ou COUNT(quelque chose different de NULL);

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Citation Envoyé par DanielNobre Voir le message
    Le COUNT(REQUEST_USR_CREATE_ID) a le même sens que COUNT(1) ou COUNT(quelque chose different de NULL);
    Justement, non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select count(request_usr_create_id) as c1
         , count(1)                     as c2
      from (select 1 as request_usr_create_id union all
            select null) as sr;
     
            C1         C2
    ---------- ----------
             1          2

  6. #6
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Brésil

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Ok,
    Le COUNT(REQUEST_USR_CREATE_ID) a le même sens que COUNT(1) ou COUNT(quelque chose different de NULL);
    J'ai pensé que le "REQUEST_USR_CREATE_ID" n'était pas NULL qu'était la PRIMARY KEY, je me suis trompé pour ça. Mais j'avais dit que "... ou COUNT(quelque chose different de NULL)" , que c'est exactement le cas que vous montrez.

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

Discussions similaires

  1. Comment faire un rapport à partir de deux tables !?
    Par linger dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/03/2009, 20h18
  2. Réponses: 3
    Dernier message: 04/03/2007, 19h00
  3. Comment faire une classe avec deux form?
    Par Mickey.jet dans le forum Delphi
    Réponses: 10
    Dernier message: 04/07/2006, 18h23
  4. Réponses: 10
    Dernier message: 30/06/2005, 12h20
  5. comment faire des espaces entre deux liens ???
    Par baaps dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/03/2005, 09h53

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