sql >> Databasteknik >  >> RDS >> Mysql

Beräkna decil från frekvens i MySQL

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

Beräkna decil från frekvens

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 frekvens.

beställ+------+--------------+-------------+| user_id | produkt | försäljning |+-----------+------------+--------+| 1 | Tvål | 10 || 4 | Parfym | 100 || 1 | Nudlar | 20 || 4 | Tvål | 10 || 1 | Lim | 20 || 3 | Deo | 200 |+------------+------------+---------+
deciler+------------+--------+--------+------------- --+| user_id | totalt | rang | decil |+-----------+-----------+--------+------------------- -+| 1 | 3 | 1 | 10 || 4 | 2 | 2 | 7 || 3 | 1 | 3 | 3 |+------------+-----------+--------+------------------- -+

Här är en fråga du kan använda för att beräkna decil från frekvens eller räkning i MySQL. Byt bara ut kolumnerna – user_id, sales och table – order. Den räknar antalet beställningar för varje användare. Sedan rangordnar den dem efter antal beställningar. Slutligen beräknar den decil med hjälp av rang.

välj user_id  ,total,rank,round(10*(cnt-rank+1)/cnt,0) som decil från (SELECT user_id,total,@curRank :=@curRank + 1 AS rankFROM (välj user_id  ,count(försäljning  ) totalt från `order  ` grupp av user_id  )p, (SELECT @curRank :=0) rORDER BY total desc ) som dt,(select count(distinct user_id  ) som cnt från `order  `) som ct

Om du redan har antal beställningar för varje användare i tabellen och vill använda tabellen direkt för att beräkna decil från frekvens eller antal, här är en fråga

  1. Vad är en MDF fil?

  2. Hur man återställer Amazon RDS Master User Password

  3. Använda SolarWinds Serv-U på Linux med en SQL Server Authentication Database

  4. Problem när man jämför resultatet av to_char(myDate, 'DAY') med en sträng