Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Calcular decil no MySQL com base em totais


Você pode calcular o decil no MySQL para identificar os melhores clientes. Basicamente, você classifica e agrupa os clientes em 10 grupos com base no total de vendas. Com base no resultado, você pode criar iniciativas de retenção mais focadas e relevantes. Aqui está uma consulta pronta para fazer isso.

Calcular Decile no MySQL


Por exemplo, você tem uma tabela pedidos que contém todos os pedidos de produtos para cada usuário. Você deseja calcular o decil no MySQL.
order
+-----------+------------+----------+
|  user_id  |   product  |   sales  |
+-----------+------------+----------+
|     1     |     Soap   |    10    |
|     4     |   Perfume  |   100    |
|     1     |   Noodles  |   20     |
|     3     |     Deo    |   200    |
+-----------+------------+----------+
deciles
+-----------+----------+---------+---------------+
|  user_id  |   total  |  rank   |     decile    |
+-----------+----------+---------+---------------+
|     1     |    30    |    3    |       3       |
|     4     |   100    |    2    |       7       |
|     3     |   200    |    1    |      10       |
+-----------+----------+---------+---------------+

Aqui está uma consulta que você pode usar para calcular o decil no MySQL com base nos totais. Basta substituir as colunas – user_id, vendas e tabela – ordem. Ele agrega as vendas totais de cada usuário. Em seguida, ele os classifica nas vendas totais. Finalmente, ele calcula o decil usando a classificação.
select user_id,total,rank,round(10*(cnt-rank+1)/cnt,0) as decile from   
(SELECT  user_id,total,@curRank := @curRank + 1 AS rank
FROM      (select user_id,sum(sales) as total from `order` group by user_id)
p, (SELECT @curRank := 0) r
ORDER BY  total desc ) as dt,(select count(distinct user_id) as cnt from
`order`) as ct

Se você já tem vendas totais para cada usuário na tabela e deseja usar diretamente a tabela para calcular o decil, aqui está uma consulta