Soms wilt u misschien het deciel berekenen van frequentie of tellingen in MySQL op basis van. Bijvoorbeeld om klanten te rangschikken op basis van het aantal aankopen of bestellingen in plaats van op basis van de totale verkoop
Bereken deciel op basis van frequentie
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 de frequentie van bestellingen.
decielen+-----------+----------+---------+------------- --+| user_id | totaal | rang | deciel |+-----------+----------+---------+-------------- -+| 1 | 3 | 1 | 10 || 4 | 2 | 2 | 7 || 3 | 1 | 3 | 3 |+-----------+----------+---------+-------------- -+
Hier is een query die u kunt gebruiken om deciel te berekenen op basis van frequentie of telling in MySQL. Vervang gewoon de kolommen - user_id, sales en table - order. Het telt het aantal bestellingen voor elke gebruiker. Vervolgens rangschikt het ze op aantal bestellingen. Ten slotte berekent het deciel met behulp van rang.
selecteer user_id ,total,rank,round(10*(cnt-rank+1)/cnt,0) als deciel van (SELECT user_id,total,@curRank :=@curRank + 1 AS rankFROM (selecteer user_id ,count(verkoop ) als totaal van `bestelling ` groeperen op user_id )p, (SELECT @curRank :=0) rORDER BY totaal desc ) als dt,(select count(distinct user_id ) als cnt van`bestelling `) als ct
Als u al het aantal bestellingen voor elke gebruiker in de tabel heeft en de tabel direct wilt gebruiken om deciel uit frequentie of telling te berekenen, dan is hier een vraag