Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回基于以前数据的列计数_Python_Mysql_Sql_Count - Fatal编程技术网

Python 返回基于以前数据的列计数

Python 返回基于以前数据的列计数,python,mysql,sql,count,Python,Mysql,Sql,Count,如何按类型、国家代码和日期获取计数用户id组,其中当前类型为D或A,而以前的类型也是D或A e、 g查询应返回国家/地区代码1,并键入D=>countuser\u id=1 国家/地区代码2,类型A=>countuser\u id=1 id country_code Type user_id Date 1 1 D 1 01-01-14 2 1 ND 1 02-01-14 3 1 D 1

如何按类型、国家代码和日期获取计数用户id组,其中当前类型为D或A,而以前的类型也是D或A

e、 g查询应返回国家/地区代码1,并键入D=>countuser\u id=1 国家/地区代码2,类型A=>countuser\u id=1

id  country_code Type user_id  Date
1   1        D     1       01-01-14
2   1        ND    1       02-01-14
3   1        D     1       03-01-14
4   1        D     1       04-01-14
5   2        D     1       05-01-14
6   2        ND    2       06-01-14
7   2        A     1       07-01-14
8   2        A     1       08-01-14

我想你想要的是:

select type, country_code, date, count(distinct user_id)
  from tbl x
 where type in ('D', 'A')
   and exists
 (select 1
          from tbl y
         where y.type in ('D', 'A')
           and y.country_code = x.country_code
           and y.date <= (select max(z.date)
                           from tbl z
                          where z.date < x.date
                            and z.type = y.type
                            and z.country_code = y.country_code))
 group by type, country_code, date
我假设您需要一个不同的用户ID计数,如果不是这样,请删除distinct关键字


这里有一个sql fiddle测试,用于测试您的数据:

因为您的计数取决于“之前”的数据,这难道不意味着您还必须按日期分组吗?因为前面的日期取决于当前日期。我不确定你所说的话是否有意义。谢谢你的回复,但结果不应该是两行,因为同一个国家出现了一次A和D。但如前所述,在不止一个日期。你必须按日期分组,如果你要计算每个日期之前的行。应该是我认为我不能很好地解释我的问题,所以我真正想要的是在当前类型和以前的类型是A或D时对用户ID进行计数。我不知道是否应该考虑日期。例如,如果今天的类型是A,用户id是1,而昨天的类型也是相同的,或者类型是D,那么我想在这些匹配中计算为1,而不是A或DI的两个实例,如果是这样的话,那么计数将与1有什么不同。您是否只需要每个国家/地区的用户列表,这些国家/地区的当前最高日期类型是国家/地区X的a或D,而其上一个最高日期类型是国家/地区X的a或D?