sql >> Database >  >> RDS >> Mysql

Bereken deciel van frequentie in MySQL

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

  1. JQuery star rating tutorial met php en mysql

  2. Oracle's containers voor J2EE (OC4J) in R12

  3. Hoe Arabische karakters in de SQL-database in te voegen?

  4. Selecteer kolommen met bepaalde kolomnamen in PostgreSQL