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 :

Requete SELECT Count(x)/Count(y)


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de ahage4x4
    Inscrit en
    Janvier 2005
    Messages
    318
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 318
    Points : 238
    Points
    238
    Par défaut Requete SELECT Count(x)/Count(y)
    Bonjour a tous,
    Le titre n'est pas explicite je vais essayer d'etre plus clair.

    Je voudrais sortir une valeur Z = Count(x)/Count(y) et y={x>une certaine date}

    Pour mieux comprendre voici ma requete bien sur eronnée et dont le SQL est faux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (COUNT(dterendu>=today))/(COUNT (dterendu) FROM ma_table
    La division est possible dans un select sauf que la condition >= ne peut etre valable.

    Comment avoir un resultat pareil a partir d'une seule requete?

    Merci d'avance, en esperant que j'ai bien expliqué le souci!

    ps:C'est une bdd informix

  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
    Points : 2 227
    Points
    2 227
    Par défaut
    SI la syntaxe normée suivante fonctionne avec informix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT SUM(CASE WHEN dterendu>=today
                    THEN 1
                    ELSE 0
               END) / COUNT (dterendu) FROM ma_table
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre actif Avatar de ahage4x4
    Inscrit en
    Janvier 2005
    Messages
    318
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 318
    Points : 238
    Points
    238
    Par défaut
    Citation Envoyé par Médiat
    SI la syntaxe normée suivante fonctionne avec informix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT SUM(CASE WHEN dterendu>=today
                    THEN 1
                    ELSE 0
               END) / COUNT (dterendu) FROM ma_table

    Merci Mediat pour l'info.
    Je vois l'idée , je n'ai jamais eu ce besoin, donc c'est tout nouveau pour moi!

    J'ai un message d'erreur: There are no data to receive, comme quoi il n'a pas trouvé de resultat?
    Voila ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SUM(CASE WHEN dte_rendu>=today
                    THEN 1
                    ELSE 0
               END) / COUNT (dte_rendu) FROM zz_intranet WHERE cd_type = "CDE"
     
    AND no_cdeof > 400000;

    C'est quoi a votre avis? Pour info je lance mes requetes depuis excel avec un module special qui s'appelle CI-LINK

    Cordialement

    Merci

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Serait-il possible d'avoir un peu plus de détails sur ta table?

    Et est-ce que tu es sûr qu'il y a des résultats à ta requête?

    Bon courage
    Nadine

  5. #5
    Membre actif Avatar de ahage4x4
    Inscrit en
    Janvier 2005
    Messages
    318
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 318
    Points : 238
    Points
    238
    Par défaut
    Citation Envoyé par Nadine
    Bonjour,

    Serait-il possible d'avoir un peu plus de détails sur ta table?

    Et est-ce que tu es sûr qu'il y a des résultats à ta requête?

    Bon courage
    Nadine
    Salut Nadine,
    J'ai besoin de ton avis:

    en faisant ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "SELECT  SUM(CASE WHEN (1=1) THEN 1 ELSE 0 END) FROM zz_intranet WHERE cd_type = ""CDE""
    AND no_cdeof > 400000;"
    MESSAGE: NO DATA TO RECEIVE
    J'ai une réponse donc pas de souci.



    Et en faisant ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "SELECT SUM(CASE WHEN (dte_rendu>=today)
                    THEN 1
                    ELSE 0
               END) / COUNT (dte_rendu) FROM zz_intranet WHERE cd_type = ""CDE""
     
    AND no_cdeof > 400000;
     
    "
    Le problème vient certainement de la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SUM(CASE WHEN (dte_rendu>=today)
                    THEN 1
                    ELSE 0
               END) / COUNT (dte_rendu)
    Autre test qui ne marche pas pourtant!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "SELECT ( SUM(CASE WHEN 1=1  THEN 1  ELSE 0 END)) / (COUNT (dte_rendu)) FROM zz_intranet WHERE cd_type = ""CDE""
     
    AND no_cdeof > 400000;"
    Des idées?
    Merci d'avance!!

  6. #6
    Membre actif Avatar de ahage4x4
    Inscrit en
    Janvier 2005
    Messages
    318
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 318
    Points : 238
    Points
    238
    Par défaut
    Salut a tous,
    Je me demande pourquoi je n'ai pas de resultat quand j'ajoute la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WHERE cd_type = ""CDE""
     
    AND no_cdeof > 400000;
    En essayant un simple SELECT COUNT avec la meme clause where j'ai des resultats cad en faisant le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  COUNT(dte_rendu) FROM zz_intranet WHERE cd_type="CDE" AND no_cdeof>400000
    Il me semble que c'est la clause where qui gene avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SUM(CASE WHEN (dte_rendu>=today)
                    THEN 1
                    ELSE 0
               END) / COUNT (dte_rendu) FROM zz_intranet
    Avez vous des idée de ce que ca peut etre?

    Merci d'avance

  7. #7
    Membre actif Avatar de ahage4x4
    Inscrit en
    Janvier 2005
    Messages
    318
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 318
    Points : 238
    Points
    238
    Par défaut
    Merci Médiat pour ta réponse, ca m'a résolu mon probleme!

    Cordialement

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

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. requet select count
    Par rezguiinfo dans le forum C#
    Réponses: 5
    Dernier message: 11/05/2010, 15h11
  3. Requete select count(*) avec having max()
    Par Goupo dans le forum Langage SQL
    Réponses: 10
    Dernier message: 09/03/2009, 12h50
  4. requete de select avec un count trop longue
    Par Phiss dans le forum ASP
    Réponses: 8
    Dernier message: 21/05/2008, 19h44
  5. erreur requete select count
    Par offspring dans le forum C#
    Réponses: 14
    Dernier message: 16/05/2008, 19h36

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