gpt4 book ai didi

SQL 查询将字段递增该字段中的前一个数字

转载 作者:行者123 更新时间:2023-11-29 12:38:35 26 4
gpt4 key购买 nike

首先,这是我关于该问题的第一个问题:SQL request to group and sum numbers by their day of creation

现在,假设我想让它变得更复杂,经过之前的操作并感谢答案,我得到了按天分组的结果,因此添加了当天的每个条目。我有这个:

1 | 200 | 2010-01-01
2 | 100 | 2010-01-01

转换成这样:

1 | 300 | 2010-01-01

这已经很不错了,但是如果我希望金额字段每次都递增怎么办?

1 | 300 | 2010-01-01
2 | 200 | 2010-01-02

将变成:

1 | 300 | 2010-01-01
2 | 500 | 2010-01-02
x | (previous amount + this amount) | this date

感谢我对上一个问题的回答,我得到了 sql 查询:

select sum(amount), to_char(date, 'YYYY-MM-DD') 
from mytable
group by to_char(date, 'YYYY-MM-DD')
order by sum(amount) ASC;

最佳答案

运行总和可以使用窗口函数完成:

select sum(amount) over (order by date asc), 
to_char(date, 'YYYY-MM-DD')
from mytable
order by date ASC;

如果你想要聚合结果的运行总和,只需将它放入子查询中:

select sum(day_total) over (order by date) as running_total,
day_total,
date
from (
select sum(amount) as day_total,
date
from mytable
group by date
) t
order by date

如果 date 列实际是 date 数据类型,则没有理由对其使用 to_char()。顺便说一句:对列名使用保留字 (date) 并不是一个好主意。

这里重要的是 order by 作为 over 定义的一部分。

手册中有更多详细信息:http://www.postgresql.org/docs/current/static/tutorial-window.html

关于SQL 查询将字段递增该字段中的前一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com