Bonjour à tous,
après plusieurs essais infructueux, je vous soumet mon problème de requête :
soit une table T avec
- un champs tu (bigint) qui est un temps epochs
- un champs val (double) qui est une valeur.
Je souhaiterais obtenir en résultat de requête la représentation suivante
tu_start, count_val_jour, count_val_heure.
avec tu_start représenté heure par heure,
count_val_jour : nombre de valeurs acquises sur la journée et
count_val_heure : nombre de valeurs acquises en 1 heure.
Pour une journée il doit donc y avoir répétition de 24 fois la valeur de count_val_jour dans le résultat de la requête.
soit :
tu_start+00 count_val_jour_1 count_val_heure(x)
tu_start+01 count_val_jour_1 count_val_heure(y)
tu_start+02 count_val_jour_1 count_val_heure(z)
...
tu_start+25 count_val_jour_2 count_val_heure(a)
tu_start+26 count_val_jour_2 count_val_heure(b)
tu_start+27 count_val_jour_2 count_val_heure(c)
...
L'idée ensuite est de pouvoir vérifier que pour chaque intervalle de 1 heure:
count_val_heure x 24 ~ count_val_jour et vérifier ainsi des "trous" d'acquisition de mesures.
Pour cela j'ai :
la requête pour avoir le comptage par heure :
la requête pour avoir le comptage par jour:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select SQL_BIG_RESULT from_unixtime(min(T.`tu`)) AS 'tu_start', count(T.`val`) as 'count_val_heure' from T group by from_unixtime(T.`tu`, '%Y-%m-%d %H') order by tu_start asc
Mon problème est de "lier" ces 2 requêtes, j'imagine qu'il faut passer par une jointure de la table T avec elle-même mais pour le moment je n'ai pas réussi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select SQL_BIG_RESULT from_unixtime(min(T.`tu`)) AS 'tu_start', count(T.`val`) as 'count_val_jour' from T group by from_unixtime(T.`tu`, '%Y-%m-%d') order by tu_start asc
Si quelqu'un a un conseil à me fournir,
Merci d'avance.
Fred!
Partager