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 PostgreSQL Discussion :

Calcul délais moyens


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Calcul délais moyens
    Bonjour les amis, aujourd'hui je fais appel à vous car j'ai une requête à faire, et je n'y arrive pas du tout.
    J'ai deux tables , une qui liste les dossiers qui s’appelle dossier, avec la date de création du dossier.
    Une autre table changement_etat. Cette table a les informations fk_id_dossier, le nouvel état du dossier, et la date a laquelle il a été changé.

    Je souhaiterai calculer le temps moyen de date de création du dossier avec date a laquelle il a changé, tout ça par mois.
    Exemple:
    En janvier le temps moyen de changement état était de 7,35 semaines

    J'ai déjà commencé mais ça ne donne pas le résultat attendu :
    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
     SELECT  (date_part('week',dossier.date_creation) - date_part('week',max(changement_etat.date))) as Temps ,date_part('year', dossier.date_creation)as année,
    CASE
    	WHEN date_part('month', dossier.date_creation) = '01' THEN 'Janvier'
    	WHEN date_part('month', dossier.date_creation) = '02' THEN 'Février' 
    	WHEN date_part('month', dossier.date_creation) = '03' THEN 'Mars' 
    	WHEN date_part('month', dossier.date_creation) = '04' THEN 'Avril' 
    	WHEN date_part('month', dossier.date_creation) = '05' THEN 'Mai' 
    	WHEN date_part('month', dossier.date_creation) = '06' THEN 'Juin' 
    	WHEN date_part('month', dossier.date_creation) = '08' THEN 'Aout' 
    	WHEN date_part('month', dossier.date_creation) = '09' THEN 'Septembre' 
    	WHEN date_part('month', dossier.date_creation) = '10' THEN 'Octobre' 
    	WHEN date_part('month', dossier.date_creation) = '11' THEN 'Novembre' 
    	WHEN date_part('month', dossier.date_creation) = '12' THEN 'Décembre' 
    	end as "Mois"
    	from dossier,changement_etat
     
    where changement_etat.fk_id_dossier = dossier.id_dossier
     
    group by date_part('week', dossier.date_creation), date_part('week',changement_etat.date), date_part('month', dossier.date_creation), date_part('year', dossier.date_creation),id_dossier
    order by date_part('year', dossier.date_creation) desc
    Cordialement, Renaud
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 126
    Points : 38 509
    Points
    38 509
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    J'ai traité un cas équivalent sur un autre SGBD, je vous le livre tel-quel mais à adapter, les fonctions date sont différentes selon les SGBD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        WITH CTE1 (MM, MIN, NB) AS           
            (SELECT MONTH(MV.DATEDB)         
                  , MIN(DAYS(CT.TIMETS))     
                  , AVG(DAYS(MV.DATEDB))     
             FROM MVTS MV                    
             INNER JOIN CTRA CT              
                ON CT.IDENT1=MV.IDENT1       
             GROUP BY MONTH(MV.DATEDB)       
            )                                
        SELECT MM, MIN, NB, MIN-NB           
        FROM CTE1                            
        ;
    Dans le code ci-dessus la fonction DAYS(date) calcule un nombre de jours entre le 01-01-0001 et la date, à traduire en fonction PG
    L'écart moyen entre la date contrat et les dates mouvements se retrouve ici dans le calcul MIN - DB
    Désolé je n'ai pas de PG sous la main, j'espère que ceci pourra tout de même vous rendre service

Discussions similaires

  1. calcule de moyen
    Par debutantasp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2008, 20h03
  2. [Tableaux] insérer des champs et calculer la moyene
    Par nerazzurri dans le forum Langage
    Réponses: 15
    Dernier message: 11/05/2007, 15h24
  3. calcul délais entre deux dates avec plages horaires
    Par leila eco dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 03/01/2007, 16h51
  4. Calcul âge moyen
    Par ParisMath dans le forum Oracle
    Réponses: 1
    Dernier message: 18/04/2006, 09h00
  5. [SQL] calcul salaire moyen
    Par dadamovic dans le forum Oracle
    Réponses: 3
    Dernier message: 09/04/2006, 18h59

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