mysql SQL中的累积数据集

kwvwclae  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(46)

我在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的数据集。我想创建一个数据集,在那里我将有累积数据集。让我们假设我们有Jan 2023,Feb 2023和Mar 2023日期以及asofdate中的日期。新表将有month_year列。所以Jan 2023将只有Jan 2023,2023年2月将有2023年1月和2月,2023年3月将有2023年1月,2月和3月。我想保持最近的记录。
为了验证SQL查询是否正确:在创建数据集之后,在我们将数据分组到month_year列之后,不同的issuer_id将在整个期间内增加。
Starting table
Expected final table
我无法循环通过asofdate列中的非重复值。

lnlaulya

lnlaulya1#

在cte中获取不同的年份和月份,然后加入例如

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
如果要创建表,

create table t1 
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/q1VitS14

相关问题