Ahoj,
potřeboval bych vyřešit záludný SQL dotaz.
Mám MySQL tabulku se sloupci:
dt - datetime
sn - varchar
value - varchar
do které se ukládají měřená data. Do sloupečku dt čas měření, do sn sériové číslo zařízení a do value naměřená hodnota. A nyní k dotazu. Potřebuji zjistit JEDNÍM SQL dotazem unikátní seznam všech seriových čísel, a k nim pouze nejvyšší hodnotu měření (tj. poslední měření) a naposledy známou naměřenou hodnotu. Ne vždy se podaří všechna zařízení změřit, tedy časy mohou být odlišné, ale v jeden čas neexistují dvě stejná sn.
Výsledek by měl vypadat asi takto:
sn, dt, value
00001, 10:30:01, 50
00008, 08:30:01, 30
00020, 10:30:01, 50
...
tj. nesmí být ve výsledku např. řádka:
00001, 09:30:01, 48
Jediné co mě napadá, je SELECT * from table GROUP BY sn,dt ORDER BY sn,dt DESC a pak
vyfiltrovat všechny položky pro které bude dt nižší než maximum...
SQL dotaz bude v MySQL.
Víte někdo jak toto vyřešit? Zkoušel jsem joiny, group_concat, ale nic nevedlo k tíženému výsledku.
Díky,
Honza