0Pricing
SQL Academy · Aula

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

  1. Cláusulas de quadro: ROWS vs RANGE
  2. Lag/Lead com janelas de quadro
  3. Agrupamento em faixas com NTILE e Cume_Dist
  4. Padrões de relatórios do mundo real
← Voltar para SQL Academy