【问题标题】:MySQL Sum one field based on a second 'common' fieldMySQL 根据第二个“通用”字段对一个字段求​​和
【发布时间】:2010-09-11 03:36:11
【问题描述】:

不是 SQL 人,所以我很纠结,所以我会保持简单

+--------------+------------------------+
| RepaymentDay | MonthlyRepaymentAmount |
+--------------+------------------------+
|            3 |               0.214847 | 
|           26 |               0.219357 | 
|           24 |               0.224337 | 
|            5 |               0.224337 | 
|           18 |               0.224337 | 
|           28 |               0.214847 | 
|            1 |               0.224337 | 
|           28 |               0.327079 |
+--------------+------------------------+

我正在寻找一个查询,然后会给出类似的东西;

+--------------+------------------------+
| RepaymentDay | MonthlyRepaymentAmount |
+--------------+------------------------+
|            1 |               0.224337 | 
|            3 |               0.214847 | 
|            5 |               0.224337 | 
|           18 |               0.224337 | 
|           24 |               0.224337 | 
|           26 |               0.219357 | 
|           28 |               0.541926 | 
+--------------+------------------------+

即如果有多条记录具有相同的 'RepaymentDay' 值,则将这些值的 'MonthlyRepaymentAmount' 相加。

我可以在外部使用 perl 或 python 来完成,没问题,但我想尝试更熟悉 SQL。 有什么想法吗?

【问题讨论】:

  • 我并不关心排序,这很简单

标签: sql mysql sum


【解决方案1】:
SELECT RepaymentDay, SUM(MonthlyRepaymentAmount) AS MonthlyRepaymentAmount
FROM YourTable
GROUP BY RepaymentDay
ORDER BY RepaymentDay

【讨论】:

  • 我认为您不需要 MySQL 中的 ORDER BY - 它是自动完成的。 +1 可以快速回答。
  • @Mark - 谢谢。不知道 MySQL。
  • 感谢您的快速回复,现在如果只有复选标记权限也一样快!
  • 这是 MySQL 中一个奇怪的(但记录在案的)功能。如果您想要排序,则必须添加ORDER BY NULL。请参阅dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html 离开 ORDER BY 很好 - 它不会导致性能损失。抱歉,这个问题有点离题,但我只是认为你会感兴趣。 :)
【解决方案2】:

select RepaymentDay, sum(MonthlyRepaymentAmount) from table_name group by RepaymentDay;

【讨论】:

  • Martin's 组的重命名和明确的排序更加简洁。
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多