sql >> Databasteknik >  >> RDS >> Mysql

MySQL 8 Beräknar genomsnitt genom partitionering efter datum

Du kan använda fönsterfunktioner. Tricket är att ta en fönstersumma av totalpoängen per anställd för varje dag, som så:

select
    employee_name,
    date(created_at) created_date,
    100 * sum(score) / sum(sum(score)) over(partition by date(created_at)) monthly_score
from scores
group by employee_name, date(created_at)

I din DB-fiol , detta ger:

| employee_name | created_date | monthly_score |
| ------------- | ------------ | ------------- |
| John          | 2020-04-01   | 30.27         |
| Bob           | 2020-04-01   | 69.73         |
| John          | 2020-04-02   | 15.55342      |
| Bob           | 2020-04-02   | 68.42864      |
| James         | 2020-04-02   | 16.01794      |



  1. Parametrerad fråga som returnerar TEXT-kolumner returnerar alltid noll för INT-kolumner

  2. Är funktionsnamn i PostgreSQL skiftlägesokänsliga?

  3. Uppdatera databasdata med knappen Skicka

  4. Hur man hanterar nya filer att bearbeta i cron jobb