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

Requêtes MySQL Discussion :

Calcul sur champ table :/


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut Calcul sur champ table :/
    Bonjour à tous,

    Depuis ce matin je suis confronté à un problème :

    D'abord voici la table qui m'intéresse :

    | NOM | Statut |
    |---------------------
    | Nom1 | up |
    | Nom1 | up |
    | Nom1 | down |
    | Nom1 | up |
    | Nom1 | down |
    ...


    J'aimerais récupérer le nombre de statut "up" sur le nombre de statuts total afin d'obtenir un pourcentage, dans l'exemple ci-dessus ça donne :

    ( up ( 3 ) / total ( 5 ) ) * 100

    Je dois traiter un grand nombre de données donc je souhaiterais le faire en une seule requête.

    J'ai déjà essayé beaucoup de choses (sous-requêtes...) mais pas moyen d'arriver à ce que je veux.

    Si quelqu'un a une idée.


    Merci

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je dirais, pour commencer, regarde ce que te donne cette requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Statut, COUNT(*) AS effectif
    FROM latable
    GROUP BY Statut WITH ROLLUP
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Oh oh bien joué, ça avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TI_Name,IfOperStatus, COUNT(*) AS nb
    FROM Interfaces
    WHERE TI_Name = 'SWI-PPMU-SCA01' AND IfDescr LIKE '%Ethernet%'
    GROUP BY IfOperStatus WITH ROLLUP
    Voici le résultat :

    Name_________________Status_______________nb

    SWI-PPMU-SCA01_______down________________ 9
    SWI-PPMU-SCA01________up_________________43
    SWI-PPMU-SCA01_______(NULL)______________ 52

    Les chiffres 43 et 52 sont bien ceux que je veux récupérer, le 9 semble être la soustraction des deux, et l'on voit un décalage sur le statut :
    (NULL) <-> down

    Bref ce n'est pas important, ce que je veux surtout c'est récupérer mes valeurs et effectuer l'opération dans ma requête :

    ( 43 / 52 ) * 100 = le pourcentage que je veux trouver.

    Si tu pense connaitre la solution, je suis preneur,

    Merci !

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Attention Ti_Name n'est pas dans la clause GROUP BY, ce qui veut dire que si sa valeur n'est pas en dépendance fonctionnelle directe avec IfOperStatus, la valeur retenue sera n'importe laquelle, la première rencontrée dans le groupe par MySQL.
    Pour les autres calculs, je pense que tu as intérêt à exploiter ce résultat avec un langage procédural.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Ok merci, je pense pouvoir me débrouiller avec ça.

    Sujet résolu !

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

Discussions similaires

  1. Faire un Calcul sur une table (en groupant)
    Par suistrop dans le forum SAS Base
    Réponses: 3
    Dernier message: 07/11/2008, 14h49
  2. [WD9] Etat sur champ table
    Par jo_la_pasteque dans le forum WinDev
    Réponses: 2
    Dernier message: 17/04/2008, 15h51
  3. Calcul sur champs
    Par jacqtiti dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/07/2007, 23h13
  4. Réponses: 4
    Dernier message: 15/06/2006, 16h42
  5. Requête calcul sur champs
    Par tikawua dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 15h26

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