Mysql
 sql >> Database >  >> RDS >> Mysql

Calcola il decile in MySQL in base ai totali

Puoi calcolare il decile in MySQL per identificare i migliori clienti. Fondamentalmente, classifichi e raggruppi i clienti in 10 gruppi in base alle vendite totali. In base al risultato, puoi elaborare iniziative di fidelizzazione più mirate e pertinenti. Ecco una query pronta per farlo.

Calcola decile in MySQL

Ad esempio, hai una tabella ordini che contiene tutti gli ordini di prodotti per ciascun utente. Vuoi calcolare il decile in 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       |
+-----------+----------+---------+---------------+

Ecco una query che puoi utilizzare per calcolare il decile in MySQL in base ai totali. Basta sostituire le colonne – user_id, sales e table – order. Aggrega le vendite totali per ciascun utente. Quindi li classifica sulle vendite totali. Infine, calcola il decile usando rank.

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 hai già vendite totali per ogni utente nella tabella e desideri utilizzare direttamente la tabella per calcolare il decile, ecco una query