Marek Dacz

Marek Dacz Starszy specjalista
ds. testów w
Ministerstwie
Cyfryzacji

Temat: Agregacja danych

Witam,
Potrzebuję pomocy :) Mianowicie, próbuje zrobić agregację danych co 15 minut i niestety nie wychodzi mi :/

Tabela:
--------------------------
TimeStemp | Wartość

Czy może ktoś wie jak to zrobić??

konto usunięte

Temat: Agregacja danych

Marek Dacz:
Czy może ktoś wie jak to zrobić??

Tak na szybko ... w zasadzie jako idea:

trunc(to_number(to_char(tt,'YYYYMMDDHH24MISS'))/15) :)

:)Krzysztof Pułapa edytował(a) ten post dnia 18.11.10 o godzinie 16:39
Marek Dacz

Marek Dacz Starszy specjalista
ds. testów w
Ministerstwie
Cyfryzacji

Temat: Agregacja danych

No niestety nie działa
ORA-01861: literal does not match format string
ORA-02063: preceding line from KIWI

TS jest w formacie YYYY-MM-DD HH24:MI:SS
Grzegorz D.

Grzegorz D. PL/SQL Developer

Temat: Agregacja danych

Marek Dacz:
No niestety nie działa
ORA-01861: literal does not match format string
ORA-02063: preceding line from KIWI

TS jest w formacie YYYY-MM-DD HH24:MI:SS

To może tak łopatologicznie? (dzień był dłuuugi i ciężki...)

Najpierw tabelka, która zawiera jakieś tam TS:

select systimestamp + rownum/1440 as data from dual
connect by rownum <= 100


Daje nam czas co minutę. Wyniki zapisuję do tabeli test_gl i robię np tak:


select to_date(
substr(
to_char(data,'yyyy-mm-dd hh24:mi')
,1,14)
||
case when to_char(data,'MI') < 15 then '00'
when to_char(data,'MI') < 30 then '15'
when to_char(data,'MI') < 45 then '30'
when to_char(data,'MI') < 60 then '45'
end
, 'yyyy-mm-dd hh24:mi'), count(*)
from test_gl
group by to_date(
substr(
to_char(data,'yyyy-mm-dd hh24:mi')
,1,14)
||
case when to_char(data,'MI') < 15 then '00'
when to_char(data,'MI') < 30 then '15'
when to_char(data,'MI') < 45 then '30'
when to_char(data,'MI') < 60 then '45'
end
, 'yyyy-mm-dd hh24:mi')

... czyli na żywca tnę część daty do minut, a następnie wstawiam zgodnie z logiką case odpowiednią końcówkę i konwertuje znów na datę.
Wyniki:

1 2010-11-18 21:45:00 11
2 2010-11-18 22:00:00 15
3 2010-11-18 22:15:00 15
4 2010-11-18 22:30:00 15
5 2010-11-18 22:45:00 15
6 2010-11-18 23:00:00 15
7 2010-11-18 23:15:00 14


Nie napisałeś co które 15 minut chcesz grupować? Tak żeby otrzymać końcówki 00,15,30,45 (ja tak założyłem)? Czy może 15 minutowe interwały od sysdate? Czy od maksymalnego/minimalnego TS zapisanego w tabeli?
Edit: czy może chcesz zrobić tak jak np opisano tutaj :
http://oracle.ittoolbox.com/groups/technical-functiona...
czyli do najbliższego kwadransa. Np 22:07 zostanie uwzględnione jako 22:00, a 22:08 już jako 22:15Grzegorz Drzymała edytował(a) ten post dnia 18.11.10 o godzinie 22:23

konto usunięte

Temat: Agregacja danych

Marek Dacz:
TS jest w formacie YYYY-MM-DD HH24:MI:SS

To brzmi jakoś podejrzanie ... kolumna typu timestamp nie ma czegoś takiego jak format. To w końcu jest to VARCHAR2 czy TIMESTAMP ?
Marek Dacz

Marek Dacz Starszy specjalista
ds. testów w
Ministerstwie
Cyfryzacji

Temat: Agregacja danych

Krzysztof Pułapa:
Marek Dacz:
TS jest w formacie YYYY-MM-DD HH24:MI:SS

To brzmi jakoś podejrzanie ... kolumna typu timestamp nie ma czegoś takiego jak format. To w końcu jest to VARCHAR2 czy TIMESTAMP ?

Panowie wielkie dzięki za pomoc. Zadziałał sposób Grześka D.
pozdrawiam.Marek Dacz edytował(a) ten post dnia 19.11.10 o godzinie 03:24
Mariusz Masewicz

Mariusz Masewicz Prawie wszysko o
bazach danych Oracle
:-)

Temat: Agregacja danych

Marek Dacz:
To brzmi jakoś podejrzanie ... kolumna typu timestamp nie ma czegoś takiego jak format. To w końcu jest to VARCHAR2 czy TIMESTAMP ?
Panowie wielkie dzięki za pomoc. Zadziałał sposób Grześka D.
pozdrawiam.Marek Dacz edytował(a) ten post dnia 19.11.10 o godzinie 03:24

A odpowiesz przy okazji na pytania Krzysztofa?

Pozdrawiam

Mariusz

konto usunięte

Temat: Agregacja danych

Mariusz Masewicz:
A odpowiesz przy okazji na pytania Krzysztofa?

Od razu widać, że wyhaczyłeś neta po długiej nieobecności, bo normaaaalnie wszędzie cię pełno ;P

Ja założyłem, że tekst "próbuje zrobić agregację danych co 15 minut" oznacza, że wiersze "pojawiają się z granulacją 15to minutową" :))) Czyli co 15 minut nowy wiersz. A tu nagle niespodzianka, chodziło o to, że ma być 4 wiersze, bo w 60ciu minutach mieści się 4x15 minut ;)

No i nagle timestamp zrobił się date chociaz z jednej wypowiedzi wynikało, że ta kolumna ma jakiś format czyli jest VARCHAR2 ...

W ogóle to tajemnicza sprawa a "pytajnik" nagle uciął jej łeb i nogi jednocześnie :) i ... i tak już pewnie zostanie.

Następna dyskusja:

Antywzorce programisty baz ...




Wyślij zaproszenie do