Percentil SQL

Percentil Sql



Quais são as duas palavras comuns que estão tão intimamente relacionadas que você pensaria que são iguais? Para nós, desenvolvedores de banco de dados, seria o banco de dados SQL e as estatísticas.

Um dos cálculos estatísticos comuns que surgem até mesmo na administração de banco de dados é o percentil.

Um percentil é uma medida estatística que nos permite dividir um conjunto de dados em partes iguais de segmentos. A função dos percentis é fornecer uma visão sobre a distribuição dos dados, que é como entendemos como os valores estão distribuídos.







Neste tutorial, aprenderemos como podemos calcular os percentis em SQL para dividir os dados em vários segmentos.



Tabela de amostra

Vamos começar configurando uma tabela básica que contém dados de amostra para fins de demonstração. Isso nos ajuda a ilustrar como se comportam os vários métodos de cálculo dos percentis e o resultado resultante.



Vamos criar uma tabela chamada “produtos” que contém as informações do supermercado. A cláusula “criar tabela” é a seguinte:





CRIAR TABELA produtos (

product_id INT CHAVE PRIMÁRIA AUTO_INCREMENT,

nome_produto VARCHAR( 255 ),

categoria VARCHAR( 255 ),

preço DECIMAL( 10 , 2 ),

quantidade INT,

data_de_expiração DATA,

código de barras BIGINT

);

Depois de criar a tabela, podemos prosseguir e adicionar os dados de amostra à tabela. Podemos usar as seguintes instruções de “inserção”:

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Chapéu de Chef 25cm' ,
'padaria' ,
24,67 ,
57 ,
'09/09/2023' ,
2854509564204 );

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Ovos de codorna - enlatados' ,
'despensa' ,
17h99 ,
67 ,
'2023-09-29' ,
1708039594250 );

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Café - Egg Nog Capuccino' ,
'padaria' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Pêra - espinhosa' ,
'padaria' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Massa - Cabelo de Anjo' ,
'despensa' ,
48,38 ,
59 ,
'05/08/2023' ,
8008123704782 );

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ( 'Vinho - Prosecco Valdobiaddene' ,
'produzir' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );

No final você deverá ter uma tabela como segue:



Percentil SQL

Como você pode imaginar, a forma de calcular o percentil pode variar dependendo do mecanismo de banco de dados. Entretanto, o método mais comum é usar as funções PERCENTILE_DISC() e PERCENTILE_CONT().

Essas funções fazem parte da especificação SQL padrão (2003). Portanto, é obrigado a ser suportado por PostgreSQL e Oracle.

PERCENTILE_CONT()

Vamos começar com a função PERCENTILE_CONT(). Esta função nos permite calcular os valores percentuais como uma fração do conjunto de dados.

A função retorna valores interpolados que podem não ser precisos para o ponto de dados específico em seu conjunto de dados.

A sintaxe da função é a seguinte:

PERCENTILE_CONT(percentil) DENTRO GRUPO ( ORDEM POR nome_coluna) SOBRE ();

A função aceita os seguintes parâmetros:

  • Percentil – Especifica o valor do percentil desejado (0,0 a 1,0).
  • column_name – Denota a coluna para a qual desejamos calcular o percentil.
  • OVER() – Define a função da janela para especificar todo o conjunto de dados.

Um exemplo de como usar esta função é o seguinte:

SELECIONAR

PERCENTILE_CONT( 0,5 ) DENTRO DE GRUPO ( ORDEM POR preço) SOBRE () COMO mediana

DE

produtos;

Nota: A consulta fornecida só funciona no PostgreSQL, pois o MySQL não suporta o uso de Within GROUP.

Isso calcula os 50 º percentil dos dados fornecidos.

PERCENTILE_DISC()

Podemos usar a função PERCENTILE_DISC() para calcular o valor do percentil como um valor discreto diretamente do conjunto de dados.

A função retorna um valor que corresponde a um ponto de dados real.

A sintaxe da função é a seguinte (PostgreSQL):

PERCENTILE_DISC(percentil) DENTRO GRUPO ( ORDEM POR nome_coluna) SOBRE ();

Um exemplo de saída é o seguinte:

SELECIONAR

PERCENTILE_DISC( 0,25 ) DENTRO DE GRUPO ( ORDEM POR preço) ACIMA () AS percentil_25

DE

produtos;

Isso deve calcular os 25 º percentil dos dados.

Conclusão

Este tutorial abordou como usar as diversas funções para calcular os percentis em bancos de dados SQL.