Redshift 运行 SUM 挑战
Redshift Running SUM challenge
给定以下数据示例,我正在尝试执行一个 运行 sum() 迄今为止孤立的 account_no 服务。希望这里有人可以提供帮助。
snapshot_dt | account_no | account_name | service | cost_one
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_3 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_3 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_3 | 0.10
...
我从这段代码开始:
with _data as (
select
snapshot_dt
, sum(cost_1) as total_cost_1
from my_table
group by snapshot_dt
)
select
snapshot_dt
, sum(total_cost_1) over (order by snapshot_dt rows unbounded preceding) as running_cost_1
from _data
以上按预期工作,但后来我想看看我是否可以添加其他数据功能,例如 account_name 和服务,以便我可以通过 [=24= 获得特定的 运行 成本]、account_name,或服务。
我尝试将这些数据特征添加到一些分组语句中,最终似乎发生的是基于前一行的 运行 总数,我怀疑与 rows unbounded preceding
.
有关
您的原始代码以及您需要包含的所有地方 account_name 和 double-stars 之间的服务 (**)。去掉双星就好了:
with _data as (
select
snapshot_dt, sum(cost_1) as total_cost_1
from my_table
group by **account_name, service,** snapshot_dt
)
select **account_name, service,** snapshot_dt
, sum(total_cost_1) over (Partition By **account_name, service,** order by snapshot_dt rows unbounded preceding) as running_cost_1
from _data
** Order By account_name, service, snapshot_dt **
给定以下数据示例,我正在尝试执行一个 运行 sum() 迄今为止孤立的 account_no 服务。希望这里有人可以提供帮助。
snapshot_dt | account_no | account_name | service | cost_one
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00001 | name_1 | svc_3 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00002 | name_2 | svc_3 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_1 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_2 | 0.10
2022-02-22 00:00:00.000 | 00003 | name_3 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00001 | name_1 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00002 | name_2 | svc_3 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_1 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_2 | 0.10
2022-02-23 00:00:00.000 | 00003 | name_3 | svc_3 | 0.10
...
我从这段代码开始:
with _data as (
select
snapshot_dt
, sum(cost_1) as total_cost_1
from my_table
group by snapshot_dt
)
select
snapshot_dt
, sum(total_cost_1) over (order by snapshot_dt rows unbounded preceding) as running_cost_1
from _data
以上按预期工作,但后来我想看看我是否可以添加其他数据功能,例如 account_name 和服务,以便我可以通过 [=24= 获得特定的 运行 成本]、account_name,或服务。
我尝试将这些数据特征添加到一些分组语句中,最终似乎发生的是基于前一行的 运行 总数,我怀疑与 rows unbounded preceding
.
您的原始代码以及您需要包含的所有地方 account_name 和 double-stars 之间的服务 (**)。去掉双星就好了:
with _data as (
select
snapshot_dt, sum(cost_1) as total_cost_1
from my_table
group by **account_name, service,** snapshot_dt
)
select **account_name, service,** snapshot_dt
, sum(total_cost_1) over (Partition By **account_name, service,** order by snapshot_dt rows unbounded preceding) as running_cost_1
from _data
** Order By account_name, service, snapshot_dt **