Bonjour,
Je souhaiterais réaliser des groupements de mesures par jour et par identifiant de métier pour lesquelles la date est comprise entre l'heure_début et l'heure_fin associée au métier.
---> aggrégation de mesures à la journée, par métier
MESURE_METIER_CV
VALEUR FLOAT,
DATE_MES DATE not null,
PERFORMANCE FLOAT,
FREQ_MES VARCHAR2(1) not null, (Q=quart d'heure, J= jour)
IDMETIER NUMBER not null,
INDISPO FLOAT
clé primaire : (DATE_MES,IDMETIER,FREQ_MES)
METIERS
IDMETIER NUMBER not null,
NOM_METIER VARCHAR2(50),
HEURE_DEBUT DATE,
HEURE_FIN DATE
clé primaire : IDMETIER
la requête fonctionne presque (donc pas du tout
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 select t.IDMETIER, AVG(t.PERFORMANCE), SUM(t.indispo) , AVG(t.VALEUR) AS MOY_VAL, TO_date(t.DATE_MES, 'dd/mm/yyyy') , 'J' AS TYPE_MES from MESURE_METIER_CV t,METIERS a where ( a.idmetier=t.idmetier and FREQ_MES ='Q' and to_char(t.date_mes,'hh24:mi:ss')>=to_char(a.heure_fin,'hh24:mi:ss') and to_char(t.date_mes,'hh24:mi:ss')<=to_char(a.heure_fin,'hh24:mi:ss')) GROUP BY (t.IDMETIER, to_date(t.DATE_MES, 'dd/mm/yyyy')) ;).
Pour certains jours les aggrégations ne sont pas faites .... pourtant il y a des mesures qui se situent dans les heures d'ouverture du métier je ne comprend pas...
et si je met un COUNT(*) pour compter le nombre d'éléments qui ont servi a ce regroupement
c'est à dire le nombre de mesures qui ont servi a mesuré la journée pr un métier j'obtiens systématiquement 1 !!!
alors que j'ai entre 30 et 48 mesure par jour par métier.
j'en déduis que le group by de ma requete ne fait pas ce que je pense qu'il fait...
Il doit y avoir une subtilité du group by que je n'ai pas saisi![]()
merci bcp à ceux qui se pencheront sur mon petit soucis
Charly
Partager