ďťż
 
Oracle - zapytanie agregujące po zakresie dat ďťż
 
Oracle - zapytanie agregujące po zakresie dat
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Oracle - zapytanie agregujące po zakresie dat



Michał Sienkiewicz - 03-02-2006 09:54
Oracle - zapytanie agregujące po zakresie dat
  Witam,

Mam nastepujacą tabelę:
TAB_ID (klucz obcy do jakiejs tabeli, kolumna nieunikalna)
DATA (kolumna typu data)

W jaki sposób napisać zapytanie, które zwraca mi liczność wystąpień danego
tab_id w określonych przedziałach czasu (np co pół godziny), czyli np coś
takiego

TAB_ID COUNTER START_DATE
1 10 2005-01-26 14:00:00
1 12 2005-01-26 14:30:00
1 1 2005-01-26 15:00:00
itd.

Docelowo chciałbym utworzyć widok, przy czym można przyjąć założenie że
widok zawiera tylko te przedziały dat w których wystąpiły jakieś dane, czyli
jeżeli w przedziale półgodzinnym nie było zadnych danych dla danego TAB_ID
to zapytanie agregujące nie zwraca żadnych danych.

pozdrawiam,
Siano





Michał Sienkiewicz - 03-02-2006 09:54

  > Witam,
>
> Mam nastepujacą tabelę:
> TAB_ID (klucz obcy do jakiejs tabeli, kolumna nieunikalna)
> DATA (kolumna typu data)
>
> W jaki sposób napisać zapytanie, które zwraca mi liczność wystąpień danego
> tab_id w określonych przedziałach czasu (np co pół godziny), czyli np coś
> takiego
>
> TAB_ID COUNTER START_DATE
> 1 10 2005-01-26 14:00:00
> 1 12 2005-01-26 14:30:00
> 1 1 2005-01-26 15:00:00
> itd.
>
> Docelowo chciałbym utworzyć widok, przy czym można przyjąć założenie że
> widok zawiera tylko te przedziały dat w których wystąpiły jakieś dane,
> czyli jeżeli w przedziale półgodzinnym nie było zadnych danych dla danego
> TAB_ID to zapytanie agregujące nie zwraca żadnych danych.
Generalnie problem rozwiązałaby formuła która zaokrągla daną datę w dół do 0
lub 30 minut - wtedy już moge agregować po tych "zaokrąglonych" datach.




Michał Sienkiewicz - 03-02-2006 09:55

  > Generalnie problem rozwiązałaby formuła która zaokrągla daną datę w dół do
> 0 lub 30 minut - wtedy już moge agregować po tych "zaokrąglonych" datach.
Ok, poradziłem sobie:
DECODE(TRUNC(vfnc.data, 'HH'),
TRUNC(vfnc.data + 1/(24 * 2), 'HH'),
TRUNC(vfnc.data, 'HH'),
TRUNC(vfnc.data, 'HH') + 1/(24*2))

Może jest jakiś prostszy sposób?

pozdrawiam,
Siano




mhm - 04-02-2006 14:52

  Michał Sienkiewicz napisał(a):
>>Generalnie problem rozwiązałaby formuła która zaokrągla daną datę w dół do
>>0 lub 30 minut - wtedy już moge agregować po tych "zaokrąglonych" datach.
>
> Ok, poradziłem sobie:
> DECODE(TRUNC(vfnc.data, 'HH'),
> TRUNC(vfnc.data + 1/(24 * 2), 'HH'),
> TRUNC(vfnc.data, 'HH'),
> TRUNC(vfnc.data, 'HH') + 1/(24*2))
>
> Może jest jakiś prostszy sposób?

nie wiem czy prościej, ale może tak?

SELECT
tab_id,
Count(*) AS counter,
To_Char(data,'yyyy-mm-dd hh:') || (CASE WHEN To_Char(data,'MI') <
30 THEN '00' ELSE '30' end) AS start_date
FROM tabela
group BY
tab_id,
to_Char(data,'yyyy-mm-dd hh:') || (CASE WHEN To_Char(data,'MI') <
30 THEN '00' ELSE '30' end)

(u mnie dziala na oracle 10)
--
mhm.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= =?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com