每行的行日期之前的时间段的Mysql总和

标签 mysql

我在 mysql 中有一个表,其中包含日期列、收入列以及当月每天产生的收入 我需要把它变成格式 date, '截至该日期的收入总和'

我可以用一个

select max(date) as date, sum(revenue) as total_revenue_to_date from table where dayofmonth(date)<=1
union
select max(date) as date, sum(revenue) as total_revenue_to_date from table where dayofmonth(date)<=2
.......

等,但想以更好的格式编写它。

有人有什么想法吗?

回答: 最短,最容易理解:

SELECT fulldate, 
(SELECT SUM(margin) FROM fact_agg_margin_live_daily d2 WHERE d1.fulldate>=d2.fulldate) AS margin 
FROM fact_agg_margin_live_daily d1

最佳答案

我做了一些测试,所以这是我的例子:

表名= Material 字段名=id_material

行:1、2、3、4、6、7、9(列 id_material)

使用的查询:

选择 id_material, (SELECT SUM(id_material) FROM materiales M2 WHERE M1.id_material>=M2.id_material) AS suma 来自 Material M1

预期结果:column1 为当前 id,column2 为当前 id 加上前一个的结果之和,是的,它有效。

您可以像这样将其更改为您当前的场景:

选择日期, (SELECT SUM(revenue) FROM table T2 WHERE T1.date >= T2.date) AS revenue_until_current_date 从表 T1

这将返回每个日期以及该日期之前的收入。如果每天存储这些行,它将每天返回当天的收入加上前一天的收入。

关于每行的行日期之前的时间段的Mysql总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919144/

相关文章:

php - 从复选框中获取错误的变量

mysql - Wordpress 到 Jekyll 脚本抛出错误

mysql - 如何 GROUP_CONCAT 这个查询

php - 开始使用PHP多维数组将MySQL转JSON中添加数组名

php - 在给定时间后禁用对 mysql 的编辑

mysql - 删除崩溃的 Innodb 表

MySQL : add data from another database, 从特定行开始,user_id 为主,需要插入从 20 开始递增的数字

python - 如何使用 mysql 表中的信息创建条形图?

php - Zend 框架 2 数据库 : Make a part of the query negative using Predicate objects

php - SQL 查询语法错误?