A volte potresti voler calcolare il decile dalla recente in MySQL in base a. Ad esempio, per classificare i clienti in base all'ultimo acquisto o agli ordini anziché in base alle vendite totali.
Calcola decile dalla recente
Questo aiuta a creare offerte speciali per le persone che hanno recentemente acquistato qualcosa sul tuo sito web. 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 dall'ultimo degli ordini.
order +-----------+------------+------------------+ | user_id | product | purchase_date | +-----------+------------+------------------+ | 1 | Soap | 2013-11-20 | | 4 | Perfume | 2013-07-02 | | 1 | Noodles | 2013-10-20 | | 4 | Soap | 2013-11-11 | | 1 | Glue | 2013-09-12 | | 3 | Deo | 2013-10-20 | +-----------+------------+------------------+
deciles +-----------+----------------+---------+---------------+ | user_id | latest | rank | decile | +-----------+----------------+---------+---------------+ | 1 | 2013-11-20 | 1 | 100 | | 4 | 2013-11-11 | 2 | 66.67 | | 3 | 2013-10-20 | 3 | 33.33 | +-----------+----------------+---------+---------------+
Ecco una query che puoi utilizzare per calcolare il decile dalla recente in MySQL. Basta sostituire le colonne – user_id, Purchase_date e table – order. Ottiene l'ultima data di acquisto per ogni utente. Quindi li classifica in base alla data di acquisto più recente. Infine, calcola il decile usando rank.
select user_id,latest,rank,round(10*(cnt-rank+1)/cnt,0) as decile from (SELECT user_id,latest,@curRank := @curRank + 1 AS rank FROM (select user_id,max(purchase_date) as latest from `order` group by user_id) p, (SELECT @curRank := 0) r ORDER BY latest desc ) as dt,(select count(distinct user_id) as cnt from `order`) as ct
Se hai già l'ultima data di acquisto per ciascun utente nella tabella e desideri utilizzare direttamente la tabella per calcolare il decile dall'ultimo acquisto, ecco una query