Tema: SQL
Autorius: NicMC
Data: 2010-04-15 09:21:36
Sveiki,

Yra lenta:


+----------------------+
| 20010-01-01 12:35:42 |
+----------------------+
| 20010-01-01 12:35:45 |
+----------------------+
| 20010-01-18 10:02:02 |
+----------------------+
| 20010-01-18 10:02:05 |
+----------------------+
| 20010-01-18 10:02:08 |
+----------------------+
| 20010-02-13 12:35:42 |
+----------------------+
| 20010-02-13 12:35:48 |
+----------------------+

t.y. tiesiog paprasti datetime. Įrašai eina grupėmis, t.y. tai nėra 
nuolatos pildoma lentelė. Tarpai tarp grupių - nuo minučių iki dienų.
Reikia gauti laikus kada yra įrašai. Bet ne visus laikus, o kiekvienos 
grupės pradžią ir pabaigą. Nu, arba vidurį. T.y. šitoj konkrečioj lentoj 
priimtinas atsakymas būtų:

+----------------------+----------------------+
| 20010-01-01 12:35:42 | 20010-01-01 12:35:45 |
+----------------------+----------------------+
| 20010-01-18 10:02:02 | 20010-01-18 10:02:08 |
+----------------------+----------------------+
| 20010-02-13 12:35:42 | 20010-02-13 12:35:48 |
+----------------------+----------------------+

arba laikai viduryje intervalų:
+----------------------+
| 20010-01-01 12:35:44 |
+----------------------+
| 20010-01-18 10:02:05 |
+----------------------+
| 20010-02-13 12:35:45 |
+----------------------+

arba intervalų pradžios:
+----------------------+
| 20010-01-01 12:35:42 |
+----------------------+
| 20010-01-18 10:02:02 |
+----------------------+
| 20010-02-13 12:35:42 |
+----------------------+

vienžo belekas, kas leistų atskirti kada gi buvo sudėlioti tie įrašai. 
Selektint visus laikus ir analizuot galimybės nėra - įrašų milijonai. 
Selectinant grupuot nesigauna, nes laikai skiriasi.

Šiuo metu datetime yra floatinamas, kažkiek apvalinamas, vėl atgal į 
datetime ir grupuojama. Problema - trūksta tikslumo.

Jei kažką keičia, db - oracle.

Ačiū bent jau perskaičiusiems iki galo :)