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 :

Requête statistique pour calculer la variation d'espace libre


Sujet :

SQL Oracle

  1. #1
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut Requête statistique pour calculer la variation d'espace libre
    Bonjour à tous.

    Je travaille sur oracle 8.
    Je suis en train de collecter les statistiques concernant l'occupation d'espace d'un tablespace Oracle.

    J'ai la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create table space_tab
           (date_check date, 
           tablespace_name varchar2(64), 
           percent_free_space number);
    Où :
    • date_check : Date du contrôle de l'espace libre
    • tablespace_name : Nom du tablespace
    • percent_free_space : Pourcentage d'espace libre dans le tablespace


    Je voudrais alors savoir s'il existe une fonction SQL pour calculer la variation de l'espace libre dans chaque tablespace, c'est à dire obtenir un résultat du type : "L'espace libre du tablespace T1 diminue de 5% toutes les heures" ....

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Peut être aurez-vous un début de solution avec les fonctions analytiques, en calculant la variation entre deux check pour chaque tablespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select 
         tablespace_name, 
         date_check, 
         percent_free_space, 
         percent_free_space - lag(percent_free_space) over (partition by tablespace_name order by date_check) as variation
    from space_tab
    order by tablespace_name, date_check

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Points : 394
    Points
    394
    Par défaut
    Je te conseille cet excellent article :

    http://lalystar.developpez.com/fonctionsAnalytiques/

    Tu y trouveras certainement ton bonheur

  4. #4
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Merci de vos réponses, elle m'ont beaucoup aidé.
    J'ai résolu le problème en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT TABLESPACE_NAME,
           AVG(diminution_par_heure) moyenne_diminution_par_heure
      FROM (SELECT TABLESPACE_NAME,
                   ((lag(percent_free_space, 1)
                    over(PARTITION BY TABLESPACE_NAME ORDER BY date_check)) -
                   percent_free_space) /
                   ((date_check -
                   (lag(date_check, 1)
                    over(PARTITION BY TABLESPACE_NAME ORDER BY date_check))) * 24) diminution_par_heure
              FROM test
             WHERE date_check BETWEEN to_date('06/05/2009', 'dd/mm/yyyy') AND
                   to_date('09/05/2009', 'dd/mm/yyyy'))
     GROUP BY TABLESPACE_NAME;
    Là, j'obtiens la variation par heure :
    (date_check - (lag(date_check, 1) over(PARTITION BY TABLESPACE_NAME ORDER BY date_check))) * 24
    et dans la période voulue :
    WHERE date_check BETWEEN to_date('06/05/2009', 'dd/mm/yyyy') AND to_date('09/05/2009', 'dd/mm/yyyy')
    Merci.

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

Discussions similaires

  1. requête conditionnelle pour calcul
    Par ckisscool dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/10/2012, 14h19
  2. [MySQL] Problème de requête SQL pour calculer des stats
    Par k2006 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/05/2009, 18h23
  3. Réponses: 5
    Dernier message: 26/11/2008, 20h05
  4. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  5. Réponses: 4
    Dernier message: 22/03/2006, 17h00

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