在 Amazon Athena 中,我有一个如下所示的表:
id amount date
1 100 2018-04-05
1 50 2018-06-18
2 10 2018-04-23
2 100 2018-04-28
2 50 2018-07-07
2 10 2018-08-08
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果
id cum_sum date
1 100 2018-04
1 100 2018-05
1 150 2018-06
1 150 2018-07
1 150 2018-08
2 110 2018-04
2 110 2018-05
2 110 2018-06
2 160 2018-07
2 170 2018-08
Run Code Online (Sandbox Code Playgroud)
所以我想要每个月底(每月最后一天)每个 ID 的累计金额。我知道如何逐月执行此操作,但不知道如何在一次查询中执行此操作。
另一个问题还在于填充空月份(即 ID 1 没有所有月份的条目,因此必须重新使用累积和)。
如果也有 MySQL 的解决方案,我也会很感激。
我希望这是有道理的,并提前致谢。
我正在尝试转换yyyy-mm-dd为yyyy-ww。
对于以下数据帧如何实现:
dates = {'date': ['2015-02-04','2016-03-05']}
df = pd.DataFrame(dates, columns=['date'])
print(df)
0 2015-02-04
1 2016-03-05
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
我试过使用
YW = pd.to_datetime(df, format='%Y%W')
Run Code Online (Sandbox Code Playgroud)
但是没有运气。
我有一个本地开发人员。环境,我在其中使用 SQLAlchemy 连接到 SQL DB。我执行以下操作来获取秘密.env:
import os
from urllib.parse import quote_plus
import sqlalchemy as sa
from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
load_dotenv()
SERVER = os.getenv("SERVER_NAME")
DATABASE = os.getenv("DB_NAME")
USERNAME = os.getenv("USERNAME")
PASSWORD = os.getenv("PASSWORD")
PORT = os.getenv("PORT", default=1433)
DRIVER = os.getenv("DRIVER")
# connect using parsed URL
odbc_str = 'DRIVER='+DRIVER+';SERVER='+SERVER+';PORT='+PORT + \
';DATABASE='+DATABASE+';UID='+USERNAME+';PWD='+PASSWORD
connect_str = 'mssql+pyodbc:///?odbc_connect=' + quote_plus(odbc_str)
# connect with sa url format
sa_url = f"mssql+pyodbc://{USERNAME}:{PASSWORD}@{SERVER}:{PORT}/{DATABASE}?driver={DRIVER}"
SQLALCHEMY_DATABASE_URL = …Run Code Online (Sandbox Code Playgroud)