mysql - 如何根据两列对所有值求和
问题描述
我有这样的数据:
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
谁能给我一个提示如何去做?
解决方案
要显示每一行的总和,您必须在单独的查询中计算它并将其连接到表中。
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`
而且当您不使用关键字作为列名时,您不必每次都用反引号引用它们。
推荐阅读
- jenkins - 詹金斯:如何为参数化工作设置时间表?
- c# - 为什么我不能从“out BaseClass”转换为“out DerivedClass”?
- xamarin - 如何在 Xamarin Forms 中使用 Font Awesome 进行代码隐藏?
- javascript - 监听空白输入并向按钮添加“禁用”属性,直到注意到输入
- python - 如何用新数据打开新标签?[硒-Python]
- node.js - 我们可以使用 reactjs 打印路径定义的 pdf 吗?
- r - 根据不同数据框中的值仅对特定国家/地区着色
- javascript - 如何从 vue.js 中的函数退出
- ios - 如何在 Xcode 中将 uiview 居中?
- javascript - 如何在 React 中上传文件?