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 Procédural MySQL Discussion :

Calcul de pourcentages


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Calcul de pourcentages
    Bonjour,

    Je tourne un peu en rond sur un probleme de calcul de pourcentages.
    Je travaille sous MySQL 4.1.7 (pas de vues)
    Et mon problème est le suivant :

    Je possède une table `hmlog` contenant 5 champs: id_log, date, test_name, status_id et log_time.

    Je souhaite calculer le pourcentage de logs pourlesquels le 'status_id' est à 1 pour chaque jour, puis pour chaque mois puis pour chaque année.

    Je possède une table `Journalier` dans laquelle je veux "includer" mes résultats puis une table `mensuel` et enfin une table `annuel`.

    Je voudrais que ce cacul se fasse tous les soir pour que ma base soit à jour tous les matins.
    Je ne sais pas comment m'y prendre. Je pensais faire un script en SQL en tache planifiée mais je ne vois pas comment faire ce cacul de pourcentages uniquement avec du SQL. Et je ne sais pas si les procédures stoquées peuvent m'aider ...

    J'ai besoin d'aide.Au secours

    Merci d'avance.

    J.Charles

  2. #2
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Un truc dans ce style pourrait peut-être aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT count(IF(status_id=1,1,NULL)) / count(*) * 100 
    FROM ... WHERE ... GROUP BY date

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Ok ... Je te remercie ...

    Je vais tester ca dans la matinée et je vous tiens au courant.

    Encore merci.

    J.Charles

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Ca y'est j'ai enfin pu tester cette formule ... Et effectivement cela fonctionne.

    Est-il possible de m'expliquer le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COUNT(IF(Status=1,1,NULL))
    Je ne suis pas sur de bien saisir ...

    Si status=1 on ajoute 1 sinon on ajoute rien c'est ca ?

    Merci pour l'aide.

    J.Charles

  5. #5
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Oui, c'est cela.

    COUNT() compte le nombre d'enregistrements mais ne prend pas en compte les NULL. Donc ici, l'astuce consiste à fournir NULL si l'enregistrement ne nous intéresse pas.

    Cela est fait avec IF (condition, valeur si condition vraie, valeur si condition fausse). Si "Status=1" est vrai, alors COUNT recevra 1 et prendra en compte cette valeur dans son comptage. Si Status <> 1, COUNT recevra NULL et ne prendra pas en compte cette valeur dans le comptage.

    Voilà, j'espère que mon charabia est clair

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    On ne peut plus clair !
    Merci très beaucoup

    J.Charles

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

Discussions similaires

  1. Calcul de pourcentage
    Par jambonstar dans le forum Enigmes
    Réponses: 12
    Dernier message: 13/11/2006, 14h36
  2. Reqête avec un calcul de pourcentage
    Par jean-pierre96 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2006, 13h00
  3. Réponses: 1
    Dernier message: 10/01/2006, 20h35
  4. calcul de pourcentage
    Par PAUL87 dans le forum Access
    Réponses: 12
    Dernier message: 20/09/2005, 19h50
  5. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 16h43

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