首页 > 解决方案 > 如何根据元组中传递的日期使用 SQL 查询获取用户最近 7 天的数据?

问题描述

我在我的 python 脚本中运行一个 sql 查询来获取一些数据。这是我的 sql 查询:

sql_query=(""" SELECT date,
                      name,
                      sum(some_value) as Total_Value

            FROM table_name 
            WHERE (SUBSTRING(date,1,8), name) IN {}
            GROUP BY date,name

""").format(tuple_passed)

传递的元组是这种形式

(('20191001', 'mike'),('20191001', 'julia'),......)

表中的日期采用以下形式(它在该数据库中存储为字符串而不是日期时间格式):

202002051600

而元组日期是这样的:

20200205

这就是我使用SUBSTRING函数的原因。

问题是,对于取决于特定名称的元组中日期的 sql 查询,我想从表中查询该特定名称的最后 7 天数据(从元组中提到的日期开始)。我不知道如何在 sql 中做到这一点?主要问题是元组中每个名称的传递日期每次都不同。因此,对于每个名称,从数据库查询的最后 7 天将根据从元组传递的日期而有所不同。

元组数据来自 csv(间接来自另一个数据库)。

所以如果我的元组数据是这样的:

20200111 Mike
20200120 Julia
20200211 Bob
20200219 Mike
20200301 Bob
20200411 Mike

因此,根据 Mike 的每个日期的日期,查询应该从数据库中获取过去 7 天中每个日期"20200111" " 20200219""20200411"的 some_value 。

我尝试使用

DATE_ADD(dt, -7)

在查询的WHERE 子句中。但这无法正常工作以获取所需的数据。

标签: pythonsqldatehivejupyter-notebook

解决方案


推荐阅读