Ibland kanske du vill beräkna decil från frekvens eller räkningar i MySQL baserat på. Till exempel att rangordna kunder baserat på antal köp eller beställningar istället för baserat på total försäljning
Beräkna decil från frekvens
Det finns inga funktioner för det ännu. Här är en färdig fråga för att göra det.
Du har t.ex. bordsbeställningar som innehåller alla produktbeställningar för varje användare. Du vill beräkna decil från beställningars frekvens.
deciler+------------+--------+--------+------------- --+| user_id | totalt | rang | decil |+-----------+-----------+--------+------------------- -+| 1 | 3 | 1 | 10 || 4 | 2 | 2 | 7 || 3 | 1 | 3 | 3 |+------------+-----------+--------+------------------- -+
Här är en fråga du kan använda för att beräkna decil från frekvens eller räkning i MySQL. Byt bara ut kolumnerna – user_id, sales och table – order. Den räknar antalet beställningar för varje användare. Sedan rangordnar den dem efter antal beställningar. Slutligen beräknar den decil med hjälp av rang.
välj user_id ,total,rank,round(10*(cnt-rank+1)/cnt,0) som decil från (SELECT user_id,total,@curRank :=@curRank + 1 AS rankFROM (välj user_id ,count(försäljning ) totalt från `order ` grupp av user_id )p, (SELECT @curRank :=0) rORDER BY total desc ) som dt,(select count(distinct user_id ) som cnt från `order `) som ct
Om du redan har antal beställningar för varje användare i tabellen och vill använda tabellen direkt för att beräkna decil från frekvens eller antal, här är en fråga