SQL 中的累积数据集

问题描述 投票:0回答:1

我已经在 python 中创建了一个函数,我正在尝试用 SQL 编写相同的函数。

import pandas as pd
df['asofdate'] = pd.to_datetime(df['asofdate'])
df['month_year'] = df['asofdate'].dt.to_period('M')
lista_dat = df['month_year'].unique()
dataframe = pd.DataFrame()
for i in lista_dat:
    new = df[df['month_year'] <= i]
    new = new.drop_duplicates(subset=['issuer_id'], keep='last')
    new['month_year'] = i
    dataframe = pd.concat([new, dataframe])

基本上,我有一个包含 Issuer_id 和 asofdate 的数据集。我想创建数据集,其中我将拥有累积数据集。假设我们有 2023 年 1 月、2023 年 2 月和 2023 年 3 月的日期以及 asofdate 中的这一天。新表将具有 Month_year 列。所以 Jan 2023 将只有 Jan 2023,Feb 2023 将有 Jan 和 Feb 2023,Mar 2023 将有 Jan、Feb 和 Mar 2023。我想保留最新的记录。

验证 SQL 查询是否正确: 创建数据集后,我们将数据分组到month_year列后,不同的issuer_id将在整个期间不断增加。

Starting table

Expected final table

我无法循环遍历 asofdate 列中的不同值。

sql mysql group-by union cumulative-frequency
1个回答
0
投票

获取 cte 中不同的年份月份,然后加入eg

with cte as
(
select distinct cast(date_format(t.dt,'%Y%m') as unsigned)ym
from t)
select * from cte
join t on cast(date_format(t.dt,'%Y%m') as unsigned) <= cte.ym 

https://dbfiddle.uk/2BNtRz5r

© www.soinside.com 2019 - 2024. All rights reserved.