Tema: Re: MSSQL grupavimai
Autorius: zZz
Data: 2011-06-27 13:59:27
Dėkui.
"If" <baska@hotmail.com> wrote in message news:iu99lq$gr1$1@trimpas.omnitel.net...
> Cia ne pirma karta eina panasus uzdaviniai. Jei ukiskai as laikausi 
> taisykles, kiek imanoma is pradziu uzdavinius spresti per duomenu struktura, 
> toliau per selectus ir kas lieka atlikti manipuliacijas data setuose. 
> Nezinau ar galima tame uzdavini eiti ne per selecta, o per duomenu 
> struktura, tokiu atveju sukurus papildomus laukus jis sprendziasi ukiskai ir 
> paprastai.
> 
> 1 Sukuriami arba virtualioje lentoje, arba tiesiog fiziskai lentoje pirmu 
> atveju papildomi du laukai, 1 NrSkirtumai, NrGrupes. Kitais dviem dar vienas 
> papildomas trecias laukas Nr1
> 2  Esant 2 ir 3 atveju "parsinam" stringa, isskiriam skaiciu ir sukeliam i 
> Nr1 lauka
> 3 i NrSkirtumai lauka sukeliam duomenis, kuriu reiksme lygi, pries tai 
> esancio ir dabartinio iraso skirtumui(irasu atsortavimas butinas pagal Nr)
> 4 Suzymim grupes, kuriu algoritmas skamba panasiai taip,  Jei NrSkirtumai > 
> 1, TAI , NrGrupes = NrGrupes + 1
> 
> Turint jau tokia struktura toliau nesunkiai gausi rezultata su elementariu 
> Goup By Selectu pagal NrGrupes lauka.
> 
> P.S Mano praktika sako, kad visada reikia daryti taip db, kad isivaizduoti 
> jog joje bus maziausiai keli milijonai irasu, todel vengiu kiek imanoma 
> virtualiu struktura ir tokia struktura organizuociau fiziskai, paciose 
> lentose duomenu bazeje.
> 
> Cia toks ukiskas sprendimo variantas butu.
> 
> 
> "zZz" <zZz@zirzilia.lt> wrote in message 
> news:iu948p$a1a$1@trimpas.omnitel.net...
>> Šiandien prireiks, gal kas darėt sekantį grupavimą ir pasidalinsit metodu?
>>
>> MSSQL 2008 R2
>>
>> Yra lenta su lauku NR nvarchar(5) not null. Reikia sugrupuoti pgl. iš 
>> eilės einančius numerius,
>> turėtų sugrupuoti taip (ryšium su tuo, kad kiti parametrai vienodi):
>>
>> ---
>> 1.
>> jei yra šie NR - 1, 2, 3, 27, 28, 35, 51, 52, 53, 54
>>
>> 1-3
>> 27-28
>> 35
>> 51-54
>>
>> ---
>> 2.
>> Atitinkamai su 1A, 2A, 3A, 27A, 28A, 35A, 51A, 52A, 53A, 54A
>>
>> 1A-3A
>> 27A-28A
>> 35A
>> 51A-54A
>>
>> ---
>> 3.
>> Persidengiančios aibės - 1, 1A, 2, 2A, 3 - turėtų būti atskiros
>>
>> 1-3
>> 1A-2A
>>
>> ---
>> Domina bet kurio varianto atskirai ir visų variantų bendras sprendimas. 
>> Ačiū iš anksto. 
> 
>