sql >> Database teknologi >  >> RDS >> Mysql

Beregn decil ud fra frekvens i MySQL

Nogle gange vil du måske beregne decil ud fra frekvens eller tællinger i MySQL baseret på. For eksempel at rangere kunder baseret på antal køb eller ordrer i stedet for baseret på samlet salg

Beregn decil ud fra frekvens

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 frekvensen af ​​ordrer.

deciler+------------+--------+--------+-------------- --+| bruger_id | i alt | rang | decil |+------------+-----------+--------+------------------- -+| 1 | 3 | 1 | 10 || 4 | 2 | 2 | 7 || 3 | 1 | 3 | 3 |+---------------------------- -+

Her er en forespørgsel, du kan bruge til at beregne decil ud fra frekvens eller tælle i MySQL. Udskift blot kolonnerne – bruger_id, salg og tabel – rækkefølge. Den tæller antallet af ordrer for hver bruger. Derefter rangerer den dem efter antal ordrer. Til sidst beregner den decil ved hjælp af rang.

vælg user_id  ,total,rank,round(10*(cnt-rank+1)/cnt,0) som decil fra (SELECT user_id,total,@curRank :=@curRank + 1 AS rankFROM (vælg user_id  ,count(salg  ) i alt fra `ordre  ` gruppe af user_id  )p, (SELECT @curRank :=0) rORDER BY total desc ) som dt,(vælg count(distinct user_id  ) som cnt fra `ordre  `) som ct

Hvis du allerede har antal ordrer for hver bruger i tabellen og ønsker at bruge tabellen direkte til at beregne decil ud fra frekvens eller antal, er her en forespørgsel

  1. PDO-understøttelse af flere forespørgsler (PDO_MYSQL, PDO_MYSQLND)

  2. Ændre MySQL standardtegnsæt til UTF-8 i my.cnf?

  3. SQL Server:Vedhæft forkert version 661

  4. KGXGN polling fejl (15)