Nogle gange vil du måske beregne decil ud fra frekvens eller tællinger i MySQL baseret på. For eksempel at rangere kunder baseret på antal køb eller ordrer i stedet for baseret på samlet salg
Beregn decil ud fra frekvens
Der er endnu ingen funktioner til det. Her er en klar forespørgsel til at gøre det.
F.eks. har du et bord ordrer som indeholder alle produktordrer for hver bruger. Du ønsker at beregne decil ud fra frekvensen af ordrer.
deciler+------------+--------+--------+-------------- --+| bruger_id | i alt | rang | decil |+------------+-----------+--------+------------------- -+| 1 | 3 | 1 | 10 || 4 | 2 | 2 | 7 || 3 | 1 | 3 | 3 |+---------------------------- -+
Her er en forespørgsel, du kan bruge til at beregne decil ud fra frekvens eller tælle i MySQL. Udskift blot kolonnerne – bruger_id, salg og tabel – rækkefølge. Den tæller antallet af ordrer for hver bruger. Derefter rangerer den dem efter antal ordrer. Til sidst beregner den decil ved hjælp af rang.
vælg user_id ,total,rank,round(10*(cnt-rank+1)/cnt,0) som decil fra (SELECT user_id,total,@curRank :=@curRank + 1 AS rankFROM (vælg user_id ,count(salg ) i alt fra `ordre ` gruppe af user_id )p, (SELECT @curRank :=0) rORDER BY total desc ) som dt,(vælg count(distinct user_id ) som cnt fra `ordre `) som ct
Hvis du allerede har antal ordrer for hver bruger i tabellen og ønsker at bruge tabellen direkte til at beregne decil ud fra frekvens eller antal, er her en forespørgsel