每天过去 30 天每天的收入总和
Posted
技术标签:
【中文标题】每天过去 30 天每天的收入总和【英文标题】:Sum of revenue everyday, for last 30 days on each day 【发布时间】:2014-05-16 00:27:46 【问题描述】:我有一张简单的桌子。
Date | Revenue
5/1 12
5/2 25
5/3 93
.
.
11/15 47
我正在尝试编写一个返回两列的查询。第一列是日期,每天,就像原始表格一样。第二列是 30-Day-Revenue,它是原始表格中“Revenue”列过去 30 天的总和,以显示的日期结束。当我们求和时有很多重叠。提前致谢!
【问题讨论】:
你用的是什么数据库? 请edit您的问题包含您正在使用的 DBMS 的标签以及您正在使用的 SQL 语句,这会导致“我们求和时有很多重叠”。谢谢。 感谢您阅读我的问题。我只对逻辑感兴趣,而不是确切的查询。我认为使用标准 SQL 中的任何内容都应该没问题。 【参考方案1】:我有一个替代解决方案(假设您的表名为revenue_table
):
SELECT a.Date, SUM(b.Revenue)
FROM revenue_table a, revenue_table b
WHERE b.Date <= a.Date AND b.Date > a.Date - 30
GROUP BY a.Date;
【讨论】:
谢谢!你的逻辑对我帮助最大。感谢您的帮助!【参考方案2】:SELECT table1.Date, table1.Revenue, Past30DayRevenue = SUM(table2.Revenue)
FROM insert_your_table_name_here table1
JOIN insert_your_table_name_here table2 ON DATEDIFF(day, table2.Date, table1.Date) BETWEEN 0 AND 29
GROUP BY table1.Date, table1.Revenue
ORDER BY table1.Date;
【讨论】:
【参考方案3】:您可以使用subqueries 来执行此操作。例如
SELECT outer.date, (SELECT SUM(inner.revenue)
FROM table inner
WHERE inner.date > outer.date-30) AS thirtydayrevenue
FROM table outer
【讨论】:
我会试试看的!以上是关于每天过去 30 天每天的收入总和的主要内容,如果未能解决你的问题,请参考以下文章
[转帖]华为2018年收入超阿里腾讯总和,任正非:华为最大问题是赚钱太多