Nogle gange vil du måske beregne decil fra seneste i MySQL baseret på. For eksempel at rangere kunder baseret på seneste køb eller ordre i stedet for baseret på det samlede salg.
Beregn decil ud fra seneste
Dette hjælper med at skabe særlige tilbud til folk, der for nylig har købt noget på din hjemmeside. 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 seneste af ordrer.
deciler+-----------+----------------+--------+------- --------+| bruger_id | seneste | rang | decil |+-----------+----------------+--------+-------- -------+| 1 | 2013-11-20 | 1 | 100 || 4 | 2013-11-11 | 2 | 66,67 || 3 | 2013-10-20 | 3 | 33.33 |+-----------+----------------+--------+-------- -------+
Her er en forespørgsel, du kan bruge til at beregne decil fra seneste i MySQL. Udskift blot kolonnerne – bruger_id, købsdato og tabel – ordre. Den får den seneste købsdato for hver bruger. Så rangerer den dem på seneste over købsdatoen. Til sidst beregner den decil ved hjælp af rang.
vælg user_id ,latest,rank,round(10*(cnt-rank+1)/cnt,0) som decil fra (SELECT user_id,latest,@curRank :=@curRank + 1 AS rankFROM (vælg user_id ,max(købsdato ) senest fra `ordre ` gruppe af user_id )p, (SELECT @curRank :=0) rORDER BY latest desc ) as dt,(vælg count(distinct user_id ) som cnt fra `ordre `) som ct
Hvis du allerede har seneste købsdato for hver bruger i tabellen og ønsker at bruge tabellen direkte til at beregne decil ud fra købsnylighed, er her en forespørgsel