ďťż
 
[psql]zdarzenia w czasie ďťż
 
[psql]zdarzenia w czasie
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

[psql]zdarzenia w czasie



Jackoski - 23-10-2005 18:54
[psql]zdarzenia w czasie
  Witam
Mam problem z wyciągniecięm odpowiednich danych. ALe zaczne od poczatku.
Mam tabele
create table zadania
(
zdarzenie_id int4 not null,
kiedy timestamp not null
......
);

Do tego zadaje jakis przedział czasowy np 5 min. Jeśli w tym przedziale
czasowym wystapi więcej niż jedo zdarzenie o takiej samej wartości
zdarzenie_id to ma być zliczona pojedyńczo jesli zdarzenia powtarzają
sie zadziej niz dany przedział czasowy to powinny być zliczane normalnie.

Czyli jesli mamy takie dane:
zdarzenie_id kiedy
1 2005-01-01 0:01:01
2 2005-01-01 0:01:02
1 2005-01-01 0:03:01
2 2005-01-01 1:01:01
3 2005-01-01 1:01:11

to w wyniku musze otrzymać coś takiego :
zdarzenie_id ilosc
1 1
2 2
3 1

Jednak jeśli zadamy przedział czasoy np 2 godziny to wynik powinien
wyglądać tak:
zdarzenie_id ilosc
1 1
2 1
3 1

Czy da sie w taki sposób wyciągać dane z postgresa w zapytaniu sql'owym

Pozdrawiam
J.Jackowski





Paweł Matejski - 23-10-2005 18:54

  Jackoski wrote:
> Witam
> Mam problem z wyciągniecięm odpowiednich danych. ALe zaczne od poczatku.
> Mam tabele
> create table zadania
> (
> zdarzenie_id int4 not null,
> kiedy timestamp not null
> ......
> );
>
> Do tego zadaje jakis przedział czasowy np 5 min. Jeśli w tym przedziale
> czasowym wystapi więcej niż jedo zdarzenie o takiej samej wartości
> zdarzenie_id to ma być zliczona pojedyńczo jesli zdarzenia powtarzają
> sie zadziej niz dany przedział czasowy to powinny być zliczane normalnie.

> Czy da sie w taki sposób wyciągać dane z postgresa w zapytaniu sql'owym

W SQL raczej nie, chyba, że masz tabele z przedziałami. Ale w Twoim wypadku
najlepiej generować je przy pomocy funkcji zwracającej zbiór, jesli przedział
czasowy od min(kiedy) do max(kiedy) nie jest duży, albo funkcją zwracająco
przedział do którego pasuje "kiedy" w przeciwnym wypadku.

--
P.M.




Grzegorz Szyszlo - 23-10-2005 18:54

  Jackoski napisał(a):
> Witam
> Mam problem z wyciągniecięm odpowiednich danych. ALe zaczne od poczatku.
> Mam tabele
> create table zadania
> (
> zdarzenie_id int4 not null,
> kiedy timestamp not null
> ......
> );
>
> Do tego zadaje jakis przedział czasowy np 5 min. Jeśli w tym przedziale
> czasowym wystapi więcej niż jedo zdarzenie o takiej samej wartości
> zdarzenie_id to ma być zliczona pojedyńczo jesli zdarzenia powtarzają
> sie zadziej niz dany przedział czasowy to powinny być zliczane normalnie.
>
> Czyli jesli mamy takie dane:
> zdarzenie_id kiedy
> 1 2005-01-01 0:01:01
> 2 2005-01-01 0:01:02
> 1 2005-01-01 0:03:01
> 2 2005-01-01 1:01:01
> 3 2005-01-01 1:01:11
>
> to w wyniku musze otrzymać coś takiego :
> zdarzenie_id ilosc
> 1 1
> 2 2
> 3 1
>
> Jednak jeśli zadamy przedział czasoy np 2 godziny to wynik powinien
> wyglądać tak:
> zdarzenie_id ilosc
> 1 1
> 2 1
> 3 1

a nie da sie zrobić
zdarzenie_id,count(zdarzenie_id) ..... group by zdarzenie_id ?

nie jestem pewien, ale count(blablabla) można też przejechać jakąś
funkcją. tutaj pewnie będzie dzielenie całkowite ilości zdarzeń przez
przedział standardowy (5 min), z korektami aby uzyskać założone
rezultaty. pewnie to będzie
(4 + count(zdarzenie_id) / podany_przedział
^^^ dzielenie całkowite. nie pamiętam operatora :)

btw. jak count nie zechce współpracować, to z tego selecta
zrób widok zostawiając bezpośrednio count(costam),
a obliczenia wykonak w select, ktory do tego widoku sie odwola.
ot takie male oszukanstwo :)

znik.

standardowy.




Marcin Mańk - 23-10-2005 18:54

 
"Jackoski" <news@egory.info> wrote in message
news:dj8vco$rcg$1@atlantis.news.tpi.pl...

czy chodzi o to:

select zdarzenie_id,count(*)
from zadania Z1
where not exists(
select * from zadania Z2
where Z2.zdarzenie_id=Z1.zdarzenie_id
and Z2.kiedy>Z1.kiedy
and Z2.kiedy<Z1.kiedy+'2 hour'::interval
)

?

Pozdrawiam
Marcin Mańk





Filip Sielimowicz - 23-10-2005 18:54

 
Użytkownik "Marcin Mańk" <mank@phonesat.pl.spammerom.nie> napisał w
wiadomości news:djak4a$n56$1@ricewind.phonesat.pl...
>
> "Jackoski" <news@egory.info> wrote in message
> news:dj8vco$rcg$1@atlantis.news.tpi.pl...
>
> czy chodzi o to:
>
> select zdarzenie_id,count(*)
> from zadania Z1
> where not exists(
> select * from zadania Z2
> where Z2.zdarzenie_id=Z1.zdarzenie_id
> and Z2.kiedy>Z1.kiedy
> and Z2.kiedy<Z1.kiedy+'2 hour'::interval
> )
>
> ?

Niezłe ;)

A co jeśli ...

1 2005-01-01 0:01:01
2 2005-01-01 0:01:01
1 2005-01-01 0:01:01
2 2005-01-01 0:01:01
3 2005-01-01 0:01:01

:)




Marcin Mańk - 24-10-2005 11:04

  > A co jeśli ...
>
> 1 2005-01-01 0:01:01
> 2 2005-01-01 0:01:01
> 1 2005-01-01 0:01:01
> 2 2005-01-01 0:01:01
> 3 2005-01-01 0:01:01
>

Tia. Twój przypadek jest jeszcze do ominięcia( count(distinct kiedy) zamiast
count(*) ), ale:

1 2005-01-01 01:00:00
1 2005-01-01 02:00:00
1 2005-01-01 03:00:00
1 2005-01-01 04:00:00
1 2005-01-01 05:00:00
1 2005-01-01 06:00:00
1 2005-01-01 07:00:00
1 2005-01-01 08:00:00
1 2005-01-01 09:00:00

pokazuje głębszy problem z tym zapytaniem, bo zwraca 1 - czy tak ma być
według pytającego?

Pozdrawiam
Marcin Mańk
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?= [psql] Funkcja =?ISO-8859-2?Q?=B3=B1cz=B1ca_stringi?= [psql] =?ISO-8859-2?Q?Ilo=B6=E6_godzin_w_intervale?= [psql] Jak odczytać pg_index.indexprs w postaci nodeToString()? PSQL - przepisac z jednej bazy do drugiej wybrane rek [psql] Sprawdzenie jakie query sa obecnie wykonywane psql zmiana pozycji kolumny w tabeli [psql] Konfiguracja serwera i pg_restore [psql] problem z UPDATE'm dla nast. sytuacji [psql] problem z vacuum full analyze
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.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