Agrupamento em faixas com NTILE e Cume_Dist
Divida as linhas em N faixas de tamanho igual com NTILE e calcule a distribuição acumulada com CUME_DIST e PERCENT_RANK.
Agrupamento em faixas com NTILE e Cume_Dist é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
NTILE: grupos de tamanho igual
NTILE(n) divide as linhas ordenadas em n grupos aproximadamente iguais:
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%Grupos por percentil
Use NTILE(10) para decis e NTILE(100) para percentis:
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
A classificação relativa como um número de ponto flutuante em [0, 1]:
SELECT id, score,
PERCENT_RANK() OVER (ORDER BY score) AS pct_rank
FROM students;
-- 0 for the lowest, 1 for the highest.CUME_DIST
A fração de linhas cujo valor é menor ou igual ao da linha atual:
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"Estatísticas de percentil com PERCENTILE_CONT
Calcular o valor em um percentil (interpolação contínua):
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) AS median,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY total) AS p95,
PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY total) AS p99
FROM orders;PERCENTILE_DISC
Como PERCENTILE_CONT, mas retorna um valor existente de fato, em vez de um valor interpolado:
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)NTILE em partições
Criar grupos por usuário, categoria etc.:
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;Histograma com NTILE
Criar intervalos do histograma:
SELECT bucket, MIN(total) AS bucket_min, MAX(total) AS bucket_max, COUNT(*)
FROM (
SELECT NTILE(10) OVER (ORDER BY total) AS bucket, total
FROM orders
) sub
GROUP BY bucket
ORDER BY bucket;Agregação por grupo
Depois de criar os grupos, calcular estatísticas por grupo:
SELECT user_quartile, COUNT(*) AS users, AVG(total) AS avg_total
FROM (
SELECT user_id, NTILE(4) OVER (ORDER BY total) AS user_quartile, total
FROM orders
) sub
GROUP BY user_quartile;Combinando funções de janela
Combinar tudo em uma consulta para gerar um relatório detalhado:
SELECT id, total,
NTILE(4) OVER w AS quartile,
PERCENT_RANK() OVER w AS pct_rank,
AVG(total) OVER w AS overall_avg
FROM orders
WINDOW w AS (ORDER BY total);Quando NTILE engana
Empates em ORDER BY podem produzir grupos de tamanhos diferentes (NTILE não respeita empates). Use uma coluna para desempate.
Recapitulação
NTILE + PERCENT_RANK + CUME_DIST abrangem a análise de distribuição.
- NTILE para grupos de quantis
- PERCENTILE_CONT/DISC para estatísticas p50/p95/p99
- Combinar com PARTITION BY para análise por grupo
Verificação rápida
Você precisa da latência p95 de uma coluna de tempos de resposta. Qual função deve usar?
Perguntas Frequentes
A aula “Agrupamento em faixas com NTILE e Cume_Dist” é grátis?
Sim — o texto completo de “Agrupamento em faixas com NTILE e Cume_Dist” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Agrupamento em faixas com NTILE e Cume_Dist”?
Divida as linhas em N faixas de tamanho igual com NTILE e calcule a distribuição acumulada com CUME_DIST e PERCENT_RANK. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Agrupamento em faixas com NTILE e Cume_Dist”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Cláusulas de quadro: ROWS vs RANGE
- Lag/Lead com janelas de quadro
- Agrupamento em faixas com NTILE e Cume_Dist
- Padrões de relatórios do mundo real