Window Functions: Ntile() - Construindo grupos.

Olá pessoal, espero que estejam todos bem, hoje gostaria de falar de uma função que quase nunca vejo sendo utilizada, mas é muito útil no dia a dia, principalmente dos profissionais de BI, com essa função de janela, podemos fazer agrupamento de forma fácil e rápida.


Vamos ao cenário:

Temos uma tabela com 100 linhas e precisamos criar 10 grupos, ou seja a cada 10 linhas teremos um novo grupo:


Muito simples não?

Criamos os grupos sem o menor esforço.

Agora o céu é o limite, podemos combinar essa função com uma window functions Sum, por exemplo para somar os id e reiniciar a cada grupo.


Reparem que legal, eu usei a NTILE para formar um grupo, coloquei em um CTE(nada mais que uma subquery)  e após isso usei esse grupo para fazer uma soma acumulativa que reinicia a cada grupo!!

Já resolvi desafios complexos de T-SQL seguindo essa linha!!


Bem pessoal, hoje é algum simples, espero que tenham gostado! Até mais!

query utilizada:

create table #aux
(
id int identity
,aux char(1)
)
--rodar separado
insert into #aux values ('a')
go 100
---



;with cte
as
(
select *, grp = NTILE(10) over( order by id) from #aux
)
select *,soma= sum(id) over (partition by grp order by id)from cte





Comentários

Postagens mais visitadas deste blog

Tuning no Postgres utlizando View Materializada

Como realizei um tuning que caiu o tempo de execução de 8h para 7minutos!

Procedure que cria um script de insert.