首页 > 解决方案 > 如何根据两列对所有值求和

问题描述

我有这样的数据:

    user|time|date
    1   |10  |2020-01-01
    1   |15  |2020-01-01
    2   |30  |2020-01-01
    1   |20  |2020-01-02
    1   |20  |2020-01-02

我想将满足条件的所有数据的总和(TIME 列)添加到每一行(具有相同 USER 和 DATE 的行的总和,例如 user=1,date=2020-01-01)。我想稍后使用总和来计算百分比

user|time|date      |sum
1   |10  |2020-01-01|25
1   |15  |2020-01-01|25
2   |30  |2020-01-01|30
1   |20  |2020-01-02|40
1   |20  |2020-01-02|40

谁能给我一个提示如何去做?

标签: mysql

解决方案


要显示每一行的总和,您必须在单独的查询中计算它并将其连接到表中。

SELECT t.user, t.`time`, t.`date`, st.mySum
FROM your_table t
JOIN (
    SELECT user, `date`, SUM(`time`) AS mySum
    FROM your_table
    GROUP BY user, `date` 
) st ON t.user = st.user AND t.`date` = st.`date`

而且当您不使用关键字作为列名时,您不必每次都用反引号引用它们。


推荐阅读