Bonjour,
Je travaille avec MS SQL Server Express 2005.
Je cherche a obtenir une moyenne de valeur pou chaque jour du mois. Par exemple, la moyenne des valeurs pour tout les jours du mois de février.
Pour faire cela, j'ai une table nommée 15_SEC dans ma base de données qui contient, les valeurs de plusieurs variables, la date et l'heure à laquelle la valeur a été enregistrée et le nom de la variable.
Pour donner une idée à quoi ressemble cette table :
J'ai aussi une autre table nommée JrM dans laquelle je n'ai que la colonne J qui contient les valeurs:
1
2
3
4
.....
31
La table JrM fais donc référence aux différents jours d'un mois.
Donc, ce que je veux faire est sortir pour une variable donnée, la moyenne des valeurs enregistrée à chaque jours du mois. Pour faire cela, j'ai utilisé la requête suivante :
Le problème est que cette requête me renvoit des valeurs NULL pour certains jours où il y a plusieurs valeurs d'enregistrées et la requête me renvoit des valeurs moyenne pour des jours où il n'y a pas encore de données d'enregistrées. Par exemple, pour le 4 février 2010, j'ai NULL comme valeur moyenne alors que toute la journée la valeurs a été 64 et pour le 25 février 2010, et certains autres jours, j'ai une valeurs moyenne de 64 alors qu'il n'y a aucune valeurs d'enregistrée pour cette date ( Ce qui est normal puisque nous ne sommes que le 9 février
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT AVG(CAST(T2.[_VAL] as REAL)) FROM [dbo].[JrM] AS T1 LEFT JOIN (SELECT T.timestamp, T.[_VAL] FROM [dbo].[15_SEC] AS T WHERE [point_id]='FIT_101' AND T.[timestamp] BETWEEN '2010-02-01' AND '2010-02-28') AS T2 ON DATEPART(day,T2.[timestamp])=T1.J GROUP BY T1.J).
J'ai déjà utiliser cette façon de faire pour obtenir des valeurs pour chacune des heures de la journée et pour chacun des jours de la semaine sans problème, mais pour les jours d'un mois il semble y avoir quelque chose d'étrange qui se passe.
Ce serait grandement apprécié si quelqu'un peut me dire ce qui provoque ce comportement ou encore si quelqu'un a une autre idée pour faire ce que je tente de faire.
Merci de vos réponses![]()
Partager