sql >> Databasteknik >  >> RDS >> Mysql

Beräkna decil från senaste i MySQL

Ibland kanske du vill beräkna decil från senaste i MySQL baserat på. Till exempel att rangordna kunder baserat på senaste köp eller beställningar istället för baserat på total försäljning.

Beräkna decil från senaste

Detta hjälper till att skapa specialerbjudanden för personer som nyligen har köpt något på din webbplats. 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 senaste datum.

beställ+-----------+------------+----------------+| user_id | produkt | köpdatum |+-----------+------------+-----------------+| 1 | Tvål | 2013-11-20 || 4 | Parfym | 2013-07-02 || 1 | Nudlar | 2013-10-20 || 4 | Tvål | 2013-11-11 || 1 | Lim | 2013-09-12 || 3 | Deo | 2013-10-20 |+------------+------------+------------------------ +
deciler+-----------+----------------+--------+------- --------+| user_id | senaste | rang | decil |+-----------+----------------+--------+-------- -------+| 1 | 2013-11-20 | 1 | 100 || 4 | 2013-11-11 | 2 | 66,67 || 3 | 2013-10-20 | 3 | 33.33 |+-----------+----------------+--------+-------- -------+

Här är en fråga du kan använda för att beräkna decil från senaste i MySQL. Byt bara ut kolumnerna – user_id, purchase_date och table – order. Den får det senaste köpdatumet för varje användare. Sedan rangordnas dem efter senaste inköpsdatum. Slutligen beräknar den decil med hjälp av rang.

välj user_id  ,senaste,rank,runda(10*(cnt-rank+1)/cnt,0) som decil från (SELECT user_id,latest,@curRank :=@curRank + 1 AS rankFROM (välj user_id  ,max(köpdatum  ) senast från `beställning  ` grupp av user_id  )p, (SELECT @curRank :=0) rORDER BY senaste desc ) som dt,(välj count(distinct user_id  ) som cnt från `order  `) som ct

Om du redan har senaste inköpsdatum för varje användare i tabellen och vill använda tabellen direkt för att beräkna decil från köpets senaste inköpsdatum, här är en fråga

  1. MySQL okänd kolumn i ON-klausul

  2. CTE Rekursion för att få trädhierarki

  3. Python:använd mysqldb för att importera en MySQL-tabell som en ordbok?

  4. Cloud Backup-alternativ för MySQL- och MariaDB-databaser