Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Utilizando Função Window | Alguns Tópicos Adicionais
Técnicas Avançadas em SQL

bookDesafio: Utilizando Função Window

Vamos considerar a tabela bank_accounts que utilizamos nas seções anteriores:

Vamos supor que queremos adicionar informações à tabela sobre a qual classe cada usuário pertence com base no saldo de sua conta.

As classes serão determinadas da seguinte forma:

  • Uma pessoa cujo saldo da conta está nos 25% inferiores pertencerá à quarta classe;
  • Uma pessoa cujo saldo da conta está entre 25% e 50% pertencerá à terceira classe;
  • Uma pessoa cujo saldo da conta está entre 50% e 75% pertencerá à segunda classe;
  • Uma pessoa cujo saldo da conta está nos 25% superiores pertencerá à primeira classe.

Para resolver esse problema, podemos utilizar uma função de janela chamada NTILE().
A função NTILE() é uma função de janela que divide as linhas em uma partição ordenada em um número especificado de grupos aproximadamente iguais, ou "tiles".
Ela atribui a cada linha um número de grupo, começando em 1, com base no grupo ao qual pertence.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Observação

No exemplo, não é necessário especificar uma cláusula PARTITION BY porque queremos aplicar a função NTILE() ao conjunto de resultados inteiro, e não a subconjuntos ou partições específicas dos dados.
A cláusula ORDER BY é suficiente, pois define a ordem na qual as linhas são distribuídas nos tiles, garantindo que o agrupamento seja baseado na ordem dos saldos em toda a tabela.
Se quiséssemos calcular os tiles dentro de grupos específicos (por exemplo, departamentos), utilizaríamos o PARTITION BY.

Tarefa

Swipe to start coding

Sua tarefa é aplicar a função NTILE() para obter informações sobre a classe de cada titular de conta.

Você deve:

  1. Especificar o número de classes como argumento da função.
  2. Definir a ordenação pelo saldo da conta para determinar a classe.
  3. Como assumimos que a primeira classe é a de maior saldo e assim por diante, é necessário ordenar os saldos em ordem decrescente.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

How do I write a query to assign classes using NTILE() for this table?

Can you explain how NTILE() works with an example using these balances?

What would the result look like after adding the class column?

close

Awesome!

Completion rate improved to 4.35

bookDesafio: Utilizando Função Window

Deslize para mostrar o menu

Vamos considerar a tabela bank_accounts que utilizamos nas seções anteriores:

Vamos supor que queremos adicionar informações à tabela sobre a qual classe cada usuário pertence com base no saldo de sua conta.

As classes serão determinadas da seguinte forma:

  • Uma pessoa cujo saldo da conta está nos 25% inferiores pertencerá à quarta classe;
  • Uma pessoa cujo saldo da conta está entre 25% e 50% pertencerá à terceira classe;
  • Uma pessoa cujo saldo da conta está entre 50% e 75% pertencerá à segunda classe;
  • Uma pessoa cujo saldo da conta está nos 25% superiores pertencerá à primeira classe.

Para resolver esse problema, podemos utilizar uma função de janela chamada NTILE().
A função NTILE() é uma função de janela que divide as linhas em uma partição ordenada em um número especificado de grupos aproximadamente iguais, ou "tiles".
Ela atribui a cada linha um número de grupo, começando em 1, com base no grupo ao qual pertence.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Observação

No exemplo, não é necessário especificar uma cláusula PARTITION BY porque queremos aplicar a função NTILE() ao conjunto de resultados inteiro, e não a subconjuntos ou partições específicas dos dados.
A cláusula ORDER BY é suficiente, pois define a ordem na qual as linhas são distribuídas nos tiles, garantindo que o agrupamento seja baseado na ordem dos saldos em toda a tabela.
Se quiséssemos calcular os tiles dentro de grupos específicos (por exemplo, departamentos), utilizaríamos o PARTITION BY.

Tarefa

Swipe to start coding

Sua tarefa é aplicar a função NTILE() para obter informações sobre a classe de cada titular de conta.

Você deve:

  1. Especificar o número de classes como argumento da função.
  2. Definir a ordenação pelo saldo da conta para determinar a classe.
  3. Como assumimos que a primeira classe é a de maior saldo e assim por diante, é necessário ordenar os saldos em ordem decrescente.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

close

Awesome!

Completion rate improved to 4.35
Seção 3. Capítulo 5
single

single

some-alt