deliriumtremens sic transit intestinal... | Ah ouais c'est pas tout faux En plus, 16:60 n'est pas groupé avec 17:00, ce qui est aussi ennuyeux.
Bon, ben y a peut-être plus élégant, mais ça devrait aller mieux avec un modulo 60 sur les minutes, par contre il faut aussi régler le "heure + 1", pour les minutes entre 56 et 59.
Ce qui nous donne :
Code :
- select
- max(s.id),
- s.adresse_64,
- concat(lpad(s1.heure, 2, '0'),':', lpad(s1.minute, 2, '0'), ':00')
- type_valeur,
- date,
- avg(valeur)
- from sondes_v2 s
- join (select
- id,
- case when minute(heure) between 56 and 59 then hour(heure) + 1 else hour(heure) end as heure,
- 5 * ceil(minute(heure) / 5) % 60 as minute
- from sondes_v2) s1 on s1.id = s.id
- group by s.adresse_64, s1.heure, s1.minute, s.type_valeur, s.date, s.type_valeur
|
et le SqlFiddlecorrigé Message édité par deliriumtremens le 02-09-2014 à 15:01:35
|