sql >> Base de Datos >  >> RDS >> Mysql

Calcular decil en MySQL basado en totales

Puede calcular el decil en MySQL para identificar a los mejores clientes. Básicamente, clasifica y agrupa a los clientes en 10 grupos según las ventas totales. Con base en el resultado, puede idear iniciativas de retención más enfocadas y relevantes. Aquí hay una consulta preparada para hacerlo.

Calcular Decil en MySQL

Por ejemplo, tiene una tabla pedidos que contiene todos los pedidos de productos para cada usuario. Quiere calcular el decil en 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       |
+-----------+----------+---------+---------------+

Aquí hay una consulta que puede usar para calcular el decil en MySQL en función de los totales. Simplemente reemplace las columnas:ID de usuario, ventas y tabla:orden. Agrega las ventas totales de cada usuario. Luego los clasifica en ventas totales. Finalmente, calcula el decil usando el rango.

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

Si ya tiene las ventas totales de cada usuario en la tabla y desea usar directamente la tabla para calcular el decil, aquí tiene una consulta