MySQL 排序和减/加值

标签 mysql sql

我有一个数据库,其中包含用户和他们总共花费的钱。如果Bob花了100,那么Bob=>170,意味着他多花了70; 我写了命令,使我的 table 像右边的 table 一样。这是我的代码:

SELECT `name`, `Money`, `date` FROM `Money` WHERE `date` > "2000-12-30" AND `date` < "2003-12-31"ORDER BY `name`, `Money` ASC;

未排序________________________按姓名和花费的金额排序

|id|name  |Money|date      |    |id|name  |Money|date      |
|__|______|_____|__________|    |__|______|_____|__________|
|1 |Bob   |100  |01/01/2000|    |1 |Bob   |100  |01/01/2000|
|2 |Josh  |150  |02/02/2000|    |2 |Bob   |170  |01/01/2001|
|3 |Bob   |170  |01/01/2001|    |3 |Bob   |210  |02/02/2002| 
|4 |Den   |130  |02/02/2000|    |4 |Bob   |240  |02/02/2003|
|5 |Cherry|140  |02/02/2000|    |5 |Cherry|140  |02/02/2000|
|6 |Den   |180  |02/02/2001|    |6 |Cherry|240  |02/02/2001|
|7 |Ron   |150  |02/02/2000|    |7 |Den   |130  |02/02/2000|
|8 |Bob   |210  |02/02/2003|    |8 |Den   |180  |02/02/2001|
|9 |Ron   |210  |02/02/2001|    |9 |Josh  |150  |02/02/2000|
|10|Bob   |240  |02/02/2004|    |10|Josh  |270  |02/02/2001|
|11|Cherry|240  |02/02/2001|    |11|Ron   |150  |02/02/2000|
|12|Josh  |270  |02/02/2001|    |12|Ron   |210  |02/02/2001|

现在,我需要把2001年(含)到2003年之间花的所有钱加起来。不包括2000年之前花的钱。看起来应该是470。

我找不到如何总结的命令。另外,我无法创建新表,应该只使用一个命令而不使用 php、纯 MySQL 来完成此操作。我配偶我需要使用子查询,我已经尝试过,但我对此没有信心,我是 MySQL 新手。

最佳答案

您在选择中的列名称与示例中的列名称不匹配,因此我在示例中使用列名称

如果您想要一个时间点之间的名称总和,您可以使用分组依据,例如:

select name, sum(money)
from my_table 
WHERE `date` between str_to_date('1999-01-01', '%Y-%m-%d')  AND ('2009-12-31', '%Y-%m-%d')
GROUP BY name
ORDER BY name ASC

还假设您的日期列是日期数据类型

关于MySQL 排序和减/加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46456195/

相关文章:

mysql - 慢sql查询 - 根据日期间隔选择数据

SQL Server - 创建自定义自增字段

mysql - 将表id合并并替换为两个表SQL的字符串

mysql - Visual Studio 2015 组合框

php - 如何从数据库中回显 html 和 row

mysql - UNION 查询不起作用

sql - Apache Derby - 是否支持 'WITH'

mysql - 优化查询。想在子查询中不使用 max 的情况下选择最后一条记录

mysql - 子查询不提供输出

sql - 检查 SELECT 中子查询的结果是否存在