Tema: Re: SQL
Autorius: NicMC
Data: 2010-04-15 10:23:51
On 2010.04.15 10:13, Linas Petkevičius wrote:
> Uzduotele. Ar teisingai suprantu? Ish krano pradejo kapseti vanduo ir
> kas kelios sekundes nukrenta lasas. Kiekvienas nukritimas - laikas.
> Palasejo nuo keliu minuciu iki paru ir sustojo. Po kazkiek laiko vel
> visas process ish pradziu. Reik surast kiekvieno lasejimo pradzia ir
> pabaiga?

Mhm.... Na, nepaminėjau, kad lašėt gali maksimaliai 3 minutes, bet tai 
neturi reikšmės, nes tai - konfigūruojamas dalykas.
Dabar tas daroma, bet išrinkinėjant duomenis už bent kažkiek ilgesnį 
laiką serveriukas jau pabezda nuo dūšios...

Daroma tas kaip jau sakiau - laikai apvalinami. Apvalinimas tiek 
prikolnas, kad pradžioj net nesupratau. Laikas verčiamas floatu, floatas 
dauginamas smarkiai, dalinamas atgal ir verčiamas atgal į datą. 
Dauginama/dalinama - grubiai tariant nubraukiama krūva skaičių po 
kablelio. Suapvalinama iki 4 minučių tikslumo, t.y. visos eilutės 
kuriose datos patenka į tas 4 minutes turi tą vieną laiką. Tada jau 
turint šituos visus laikus, su kiekvienu atskirai vėl lendama į 
duombazę, selektinama to laiko +-2 minutės datos ir ieškoma min/max.
Darbo vargšeliui oracle tikrai užtenka. Ypač atsižvelgiant į tai, kad 
realiai duomenys yra per 3 ar 4 lenteles, kurios joininamos, joinanmi 
papildomi subselektai, yra papildomos sąlygos išrinkimui.