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

PL/SQL Oracle Discussion :

Procédure calcul écart type


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut Procédure calcul écart type
    Bonjour,

    J'effectue un calcule d'écart type sur 15 jours en PHP mais pour des raisons pratiques je voudrais retranscrire mon code PHP en PL/SQL.

    Voici mon code PHP assez simple, j'ai supprimé certaines lignes servant à rien pour la compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Premiere requete qui ramene les FS sur 15 jours et Occupation > 70
    $result_FS=mysql_query('select * from MCO_fs where date = SYSDATE  AND   t_occup > 70 order by t_occup desc ');
    while ($donnee_result_FS=mysql_fetch_array($result_FS))
    {
    $ecart=0;
    $sum_carre=0;
    $ecart_carre=0;
    // calcul du nombre d'enregistrements sur 15j pour chaque FS trouvé
    $sql_nb=" select * from  MCO_fs where hostname = '"  . $donnee_result_FS['hostname'] .  " ' and mount_point = '" . $donnee_result_FS['mount_point'] ."'  AND date <= SYSDATE AND date >= (SYSDATE-15) ";
    $donnee_result_nb=mysql_num_rows($result_nb); <==NB résultats
     
    $sql_sum_FS="select sum(t_occup) from MCO_fs where hostname = '"  . $donnee_result_FS['hostname'] .  " ' and mount_point = '" . $donnee_result_FS['mount_point'] ."' AND date <= SYSDATE AND date >= (SYSDATE-15) ";
    Cette requete fait la somme du taux d'occupation pour un FS sur 15 jours.
    $donnee_sum_FS=mysql_fetch_array($result_sum_FS);
    // $donnee_sum_FS['0'] est le résultat de la somme;
     
    $moyenne =$donnee_sum_FS['0']/$donnee_result_nb;
    Comment calculer cette moyenne assez simple en php en code PL/SQL?
    J'ai commencé comme ca mais ca fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    CREATE OR REPLACE Procedure P_ECART_TYPE_QUINZE ()
    IS
     
    CURSOR C_QUINZE IS
    SELECT DATEFIC, HOSTNAME, MOUNT_POINT, T_OCCUP 
    FROM MCO_FS 
    where DATEFIC = sysdate 
    AND T_OCCUP > 70 
    ORDER BY T_OCCUP DESC;
     
    -- Déclartion des variables
    v$DATEFIC      MCO_FS.DATEFIC%TYPE;
    v$HOSTNAME     MCO_FS.HOSTNAME%TYPE;
    v$MOUNT_POINT  MCO_FS.MOUNT_POINT%TYPE;
    v$T_OCCUP      MCO_FS.T_OCCUP%TYPE;
     
    v$ECART        NUMBER(10) :=0;
    v$SUM_CARRE    NUMBER(10) :=0;
    v$ECART_CARRE  NUMBER(10) :=0;
    v$MOYENNE      NUMBER(10) :=0;
    v$NB_RESULT    NUMBER(10) :=0;
     
    BEGIN
     
    OPEN C_QUINZE;
     
    LOOP
     
    FETCH C_QUINZE INTO 
    v$DATEFIC,
    v$HOSTNAME,
    v$MOUNT_POINT,
    v$T_OCCUP;
     
     SELECT COUNT(*) INTO v$NB_RESULT
     FROM  MCO_FS WHERE HOSTNAME = v$HOSTNAME and MOUNT_POINT = v$MOUNT_POINT
     AND DATEFIC <= SYSDATE AND DATEFIC >= (SYSDATE-15);
     
     SELECT SUM(T_OCCUP) INTO v$T_OCCUP
     FROM MCO_FS WHERE HOSTNAME = v$HOSTNAME AND MOUNT_POINT = v$MOUNT_POINT
     AND DATEFIC <= SYSDATE AND DATEFIC >= (SYSDATE-15);
     
     v$MOYENNE = v$T_OCCUP/v$NB_RESULT;
     
    END LOOP;
    CLOSE C_QUINZE; -- fermeture du curseur Table brute
     
    END;
    En fait comment faire une requete et ensuite une boucle avec le résultat des champs de celle-ci?
    Faut-il ouvrir deux cursor pour cela? Merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Regarde plutôt STDDEV et VARIANCE

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    D'après votre code c'est une moyenne et pas un écart-type, non ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut
    Oui la j'ai juste mis le code pour d'abord le calcule de la moyenne, ensuite y a le reste pour l'écart type mais pour des raisons de simplification j'ai pas mis le reste.

    Si je sais comment faire la moyenne en PL/SQL je pourrais ensuite continuer pour l'écart type

Discussions similaires

  1. [XL-2003] Calcul écart type avec deux conditions
    Par ZHNEE dans le forum Excel
    Réponses: 2
    Dernier message: 07/04/2015, 17h32
  2. Réponses: 9
    Dernier message: 01/06/2014, 11h17
  3. calcul de variance et d'écart type
    Par bidson dans le forum Firebird
    Réponses: 8
    Dernier message: 16/09/2013, 10h21
  4. [2.1.2] Calcul écart type dans BIRT
    Par nicolep dans le forum BIRT
    Réponses: 2
    Dernier message: 12/04/2007, 11h09
  5. [C#] écriture fichier .txt + calcul écart-type
    Par titaB dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/05/2005, 13h09

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