13. marts 2014 - 00:38
Der er
7 kommentarer og 1 løsning
Hvordan selecter man seneste record ved timestamp
Har en tabel SOLTEST I ORACLE 11G DATO TIMESTAMP PRODUCED NUMBER 68 12-09-19 22:30:00,000000 10,622 69 12-09-19 22:40:00,000000 10,622 70 12-09-19 22:50:00,000000 10,622 71 12-09-19 23:00:00,000000 10,622 72 12-09-19 23:10:00,000000 10,622 73 12-09-19 23:20:00,000000 10,622 74 12-09-19 23:30:00,000000 10,622 75 12-09-20 02:00:00,000000 0 76 12-09-20 02:10:00,000000 0 77 12-09-20 02:20:00,000000 0 78 12-09-20 02:30:00,000000 0 79 12-09-20 02:40:00,000000 0 80 12-09-20 02:50:00,000000 0 81 12-09-20 03:00:00,000000 0 hvordan SELECT'er jeg max(timestamp) og produced så jeg kun får 1 record pr. dag. 23:30 er ikke altid det senest loggede tidspunkt. Det drejer sig i al sin enkelthed om solcelleproduktion, som jeg gerne vil have ind i databasen, men kun produktionen pr. døgn. Jeg har prøvet at definere dato som date og som timestamp, men er ikke blevet meget klogere. Er der nogen kloge hoveder der har et forslag ?
Annonceindlæg fra Infor
13. marts 2014 - 08:02
#1
Et hurtigt bud kunne være noget i stil med: SELECT max(dato),produced FROM `soltest` GROUP BY DATE(dato)
Slettet bruger
13. marts 2014 - 08:50
#2
Kan skrive sådan: select trunc(Dato,'DD'), sum(Produced) from tabel group by trunc(Dato,'DD') eller select to_char(Dato,'YYYYMMDD'), sum(Produced) from tabel group by to_char(Dato,'YYYYMMDD')
13. marts 2014 - 15:16
#3
Alle 3 forslag summerer PRODUCED, men PRODUCED er en sum i sig selv. (Daglig akkumuleret). Derfor ønsker jeg kun at selecte den sidst loggede timestamp og PRODUCED værdi for hver dag.
Slettet bruger
13. marts 2014 - 16:53
#4
Ok - prøver igen: Select dato, produced From ( Select dato,produced ,row_number() over(partition by trunc(dato) Ordre by dato desc) nr ) Where nr = 1
13. marts 2014 - 17:51
#5
Bortset fra tastefejlen "ordre"-"order" får jeg en fejlbesked : FROM nøgleord er ikke fundet i den forventede position. Ellers ser det spændende ud.
Slettet bruger
13. marts 2014 - 18:25
#6
Max kan vel være nok hvis produced aldrig er nagativ: Kan skrive sådan: select trunc(Dato,'DD'), max(Produced) from tabel group by trunc(Dato,'DD')
13. marts 2014 - 18:37
#7
Bingo Produced kan ikke være negativ Hvor svært kan det være ? :-) Det irriterer mig bare at jeg ikke selv kunne se det. Mange tak for hjælpen og send lige et svar.
Slettet bruger
13. marts 2014 - 21:37
#8
Her er lige et svar ;-)
Computerworld tilbyder specialiserede kurser i database-management