Tenho uma tabela com a estrutura abaixo:
create table item_test
(item_id varchar2(10),
item_row number)
Os dados de exemplo são como abaixo , observe que os números na Item_Row
coluna começam em 1 e aumentam em 1 para um número sem lacunas. O que eu preciso fazer é criar intervalos de 100 ([1-100] , [101-200] , [201-300] ,......)
para cada arquivo Item_Id
.
Item_Id Item_Row
------------ -----------
A 1
A 2
A ...
A ...
A 236 /* Item_Row starts from 1 and continues to 236 */
B 1
B ...
B ...
B 173 /* Item_Row starts from 1 and continues to 173 */
C 1
C 2
C ...
C ...
C 300 /* Item_Row starts from 1 and continues to 300 */
O resultado será como abaixo:
Item_Id RowNum_From RowNum_From
------------ ----------- -----------
A 1 100
A 101 200
A 201 236
B 1 100
B 101 173
C 1 100
C 101 200
C 201 300
Existe alguma função específica para isso?
O truque é usar a
trunc
função.Aqui está uma solução usando SQL puro:
E o resultado:
Muito boa pergunta - instigante - +1!
Para resolver isso, fiz o seguinte (todo o código abaixo está disponível no violino aqui ):
Resultado:
O interesse aqui é que isso poderia fornecer mais escopo para análise - com diferentes parâmetros e/ou diferentes funções de janela.
Mude o
10
inTRUNC((i - 1) / 10
para a7
e você pode fazer uma análise semanal, por exemplo - veja o último trecho aqui .