Função MySQL CUME_DIST

Resumo : neste tutorial, você aprenderá como usar a CUME_DIST()função MySQL para calcular o valor de distribuição cumulativa.

Visão geral da função MySQL CUME_DIST()

A CUME_DIST()é uma função de janela que retorna a distribuição cumulativa de um valor dentro de um conjunto de valores. Representa o número de linhas com valores menores ou iguais ao valor dessa linha dividido pelo número total de linhas.

O valor retornado da CUME_DIST()função é maior que zero e menor ou igual a um (0 < CUME_DIST()<= 1). Os valores repetidos da coluna recebem o mesmo CUME_DIST()valor.

O seguinte mostra a sintaxe da CUME_DIST()função:

CUME_DIST() 
OVER (
   PARTITION BY expr
   ORDER BY expr [ASC | DESC]
)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

PARTIÇÃO POR

A   PARTITION BY cláusula divide o conjunto de resultados em partições às quais a CUME_DIST()função é aplicada de forma independente. Se você omitir a cláusula PARTITION BY, a função será aplicada a todo o conjunto de resultados.

ORDENAR POR

A ORDER BYcláusula especifica a ordem das linhas em cada partição ou todo o conjunto de resultados caso seja PARTITION BYomitido.

A CUME_DIST()função calcula o valor de distribuição cumulativo de cada linha com base na sua ordem na partição.

A fórmula aproximada da CUME_DIST()função é a seguinte:

ROW_NUMBER() / total_rowsLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Exemplo de função MySQL CUME_DIST()

Vamos criar uma tabela chamada scorese preencher alguns dados para demonstração:

CREATE TABLE scores (
    name VARCHAR(20) PRIMARY KEY,
    score INT NOT NULL
);

INSERT INTO
	scores(name, score)
VALUES
	('Smith',81),
	('Jones',55),
	('Williams',55),
	('Taylor',62),
	('Brown',62),
	('Davies',84),
	('Evans',87),
	('Wilson',72),
	('Thomas',72),
	('Johnson',100);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução a seguir usa a CUME_DIST()função para encontrar a distribuição cumulativa da pontuação no conjunto de resultados:

SELECT 
  name, 
  score, 
  ROW_NUMBER() OVER (
    ORDER BY 
      score
  ) row_num, 
  CUME_DIST() OVER (
    ORDER BY 
      score
  ) cume_dist_val 
FROM 
  scores;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

Exemplo de função MySQL CUME_DIST

Neste exemplo, a pontuação é classificada em ordem crescente de 55 a 100. Observe que a ROW_NUMBER()função foi adicionada para referência.

Então, como a CUME_DIST()função realiza cálculos?

Na etapa inicial, a função identifica o número de linhas no conjunto de resultados onde os valores são menores ou iguais a 55. Essa contagem é 2 para a primeira linha. A seguir, a CUME_DIST()função calcula a distribuição cumulativa dividindo essa contagem (2) pelo número total de linhas no conjunto, que é 10: 2/10. O resultado é 0,2 ou 20%. O mesmo procedimento é então repetido para a segunda linha.

Função MySQL CUME_DIST - Primeira linha

No caso da terceira linha, a CUME_DIST()função identifica quatro linhas dentro do conjunto de resultados onde os valores são menores ou iguais a 62. então, a CUME_DIST()função calcula a distribuição cumulativa dividindo esta contagem (4) pelo número total de linhas em o conjunto, que é 10: 4/10. O resultado é 0,4 ou 40%.

A mesma lógica de cálculo é aplicada às linhas restantes.

Resumo

  • Use a função MySQL CUME_DIST()para calcular a distribuição cumulativa de um valor em um conjunto de valores.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *