Soms wilt u misschien het deciel van recentheid in MySQL berekenen op basis van. Bijvoorbeeld om klanten te rangschikken op basis van recentheid van aankopen of bestellingen in plaats van op basis van totale verkopen.
Bereken Deciel op basis van recentheid
Dit helpt bij het maken van speciale aanbiedingen voor mensen die onlangs iets op uw website hebben gekocht. Er zijn nog geen functies voor. Hier is een kant-en-klare vraag om het te doen.
U heeft bijvoorbeeld een tafel bestellingen die alle productbestellingen voor elke gebruiker bevat. U wilt het deciel berekenen op basis van recentheid van bestellingen.
decielen+-----------+----------------+---------+------- --------+| user_id | laatste | rang | deciel |+-----------+----------------+---------+-------- -------+| 1 | 2013-11-20 | 1 | 100 || 4 | 2013-11-11 | 2 | 66,67 || 3 | 2013-10-20 | 3 | 33.33 |+-----------+----------------+---------+-------- -------+
Hier is een query die u kunt gebruiken om deciel te berekenen op basis van recentheid in MySQL. Vervang gewoon de kolommen - user_id, purchase_date en table - order. Het krijgt de laatste aankoopdatum van elke gebruiker. Vervolgens rangschikt het ze op de laatste over de datum van aankoop. Ten slotte berekent het deciel met behulp van rang.
selecteer user_id ,latest,rank,round(10*(cnt-rank+1)/cnt,0) als deciel van (SELECT user_id,latest,@curRank :=@curRank + 1 AS rankFROM (selecteer user_id ,max(aankoopdatum ) als laatste van `bestelling ` groeperen op user_id )p, (SELECT @curRank :=0) rORDER BY laatste desc ) als dt,(select count(distinct user_id ) als cnt van`bestelling `) als ct
Als u al de laatste aankoopdatum voor elke gebruiker in de tabel heeft en de tabel direct wilt gebruiken om deciel te berekenen op basis van recentheid van aankoop, is hier een vraag