Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Berechnen Sie das Dezil in MySQL basierend auf Gesamtsummen

Sie können das Dezil in MySQL berechnen, um die besten Kunden zu identifizieren. Grundsätzlich ordnen und gruppieren Sie Kunden basierend auf dem Gesamtumsatz in 10 Gruppen. Basierend auf dem Ergebnis können Sie fokussiertere, relevantere Maßnahmen zur Kundenbindung entwickeln. Hier ist eine fertige Abfrage dafür.

Dezil in MySQL berechnen

Beispiel:Sie haben einen Tisch Bestellungen die alle Produktbestellungen für jeden Benutzer enthält. Sie möchten das Dezil in MySQL berechnen.

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       |
+-----------+----------+---------+---------------+

Hier ist eine Abfrage, die Sie verwenden können, um das Dezil in MySQL basierend auf Summen zu berechnen. Ersetzen Sie einfach die Spalten – user_id, sales und table – order. Es aggregiert die Gesamtverkäufe für jeden Benutzer. Dann ordnet es sie nach Gesamtumsatz. Schließlich wird das Dezil anhand des Ranges berechnet.

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

Wenn Sie bereits den Gesamtumsatz für jeden Benutzer in der Tabelle haben und die Tabelle direkt zur Berechnung des Dezils verwenden möchten, ist hier eine Abfrage