sql >> データベース >  >> RDS >> Mysql

MySQL8日付によるパーティション分割による平均の計算

    ウィンドウ関数を使用できます。秘訣は、合計スコアのウィンドウ合計を取得することです。 従業員1人あたりの毎日のように:

    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)
    

    DBフィドル 、これにより次のようになります:

    | 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. 圧縮とそのパフォーマンスへの影響

    2. 更新時に変更のないタイムスタンプ

    3. スクリプトが機能する場合、Postgres now()のタイムスタンプは変更されません

    4. `select'a' =0;` 1の結果はなぜですか?