sql - 如何获得前几周的总金额
问题描述
例如,我有这张表:
日期 | 数量 |
---|---|
2021-02-16T21:06:38 | 10 |
2021-02-16T21:07:01 | 5 |
2021-02-17T01:10:12 | -1 |
2021-02-19T12:00:00 | 3 |
2021-02-24T12:00:00 | 20 |
2021-02-25T12:00:00 | -1 |
我想要每周所有前几周的总数。所以这种情况下的结果是:
日期 | 数量 |
---|---|
2021-02-15 | 0 |
2021-02-22 | 17 |
2021-03-01 | 36 |
注意:日期现在是每周(星期一)的开始。任何帮助将不胜感激。
解决方案
尝试这个:
select week_date, sum(amount) over (order by week_date )
from (
SELECT date(date_) + cast(abs(extract(dow FROM date_) -7 ) + 1 as int) "week_date",
sum(amount) "amount"
from example group by 1) t
上面的查询将只涵盖有交易记录的那一周。如果您想涵盖所有缺失的一周,请尝试以下查询:
with cte as (
SELECT date(date_) + cast(abs(extract(dow FROM date_) -7 ) + 1 as int) "week_date",
sum(amount) "amount"
from example group by 1
)
select
t1."Date",coalesce(sum(cte.amount) over (order by t1."Date"),0)
from cte right join
(select generate_series(min(week_date)- interval '1 week', max(week_date),interval '1 week') "Date" from cte) t1 on cte.week_date=t1."Date"
推荐阅读
- regex - 如何在 Google Data Studio 中提取特定文本?
- c++ - 如何在 C++ 中映射多个值?
- javascript - 在 AngularJS 模态模板中显示更多和隐藏细节
- google-sheets - 将 Google 表格列拆分为行 - 忽略任何空白
- sql-server - 使用链接服务器连接 Analysis Services 多维数据集时出错
- java - 使用 Thymeleaf (Java) 读取布尔值的问题
- c++ - 循环中用户输入的总和
- java - 在 JFrame 具有背景时添加带有时间和日期的状态栏
- azure - 如何在 Azure 门户中查看/编辑用户声明中的值
- r - 求解 R 中的三对角幂矩阵