A volte potresti voler calcolare il decile dalla frequenza o dai conteggi in MySQL in base a. Ad esempio, per classificare i clienti in base al numero di acquisti o ordini anziché in base alle vendite totali
Calcola decile dalla frequenza
Non ci sono ancora funzioni per questo. Ecco una query pronta per farlo.
Ad esempio, hai una tabella ordini che contiene tutti gli ordini di prodotti per ciascun utente. Vuoi calcolare il decile dalla frequenza degli ordini.
order +------+--------------+-------------+ | user_id | product | sales | +-----------+------------+----------+ | 1 | Soap | 10 | | 4 | Perfume | 100 | | 1 | Noodles | 20 | | 4 | Soap | 10 | | 1 | Glue | 20 | | 3 | Deo | 200 | +-----------+------------+----------+
deciles +-----------+----------+---------+---------------+ | user_id | total | rank | decile | +-----------+----------+---------+---------------+ | 1 | 3 | 1 | 10 | | 4 | 2 | 2 | 7 | | 3 | 1 | 3 | 3 | +-----------+----------+---------+---------------+
Ecco una query che puoi utilizzare per calcolare il decile dalla frequenza o contare in MySQL. Basta sostituire le colonne – user_id, sales e table – order. Conta il numero di ordini per ogni utente. Quindi li classifica in base al numero di ordini. 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,count(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à il numero di ordini per ciascun utente nella tabella e desideri utilizzare direttamente la tabella per calcolare il decile dalla frequenza o dal conteggio, ecco una query