最终,我需要的是能够根据不同的项目比较不同的团队表现 .

我有两个数据集 . 第一个是user_table,其中包含迄今为止所有人的摘要 . 示例如下:

user_id     date_added          attribute_1     attribute_2     attribute_3     ...
1           2018-01-01          a               a               null
2           2018-01-02          b               b               b
3           2018-01-02          b               c               a

第二个数据集是一个action_table,其中包含发生的所有操作的摘要 .

timestamp       user_id         action_name         project_name    
2018-01-01      1               responded           project_A
2018-01-01      1               called              project_A
2018-01-01      1               responded           ...
2018-01-02      1               called              
2018-01-02      1               called              
2018-01-03      3               attended
2018-01-04      2               responded           
2018-01-05      1               attended

使用所有这些,我需要生成一个这样的表:

project_name    group_name  project_date    group_total group_attended  day_0   day_1   day_2   ...
project_A       group_a     2018-01-01      200,000     15,000          1,000   2,000   3,000   
project_A       group_b     2018-01-01      20,000      5,000           8,000   9,000   10,000
project_A       group_c     2018-01-01      30,000      6,000           9,000   10,000  12,000
project_B       group_a     2018-01-08      15,000      1,000           2,000   3,000   5,000
project_B       group_b     2018-01-08      20,000      5,000           8,000   9,000   10,000
project_B       group_c     2018-01-08      30,000      6,000           9,000   10,000  12,000

group_name - 对具有类似属性的用户进行分组 . 属性可以来自两个表 . 例如,如果组定义是从1月2日以attribute_1作为b添加的任何人,则用户2和3将位于同一组中 .

group_total - 属于该组的用户数 . 这应包括迄今为止的总用户数,无论他们是否出现在action_table中 .

group_attended - 属于具有action_name的组的用户数,这些用户是相应的project_name .

day_0 - 属于该组的用户数,其中action_name为相应project_name的action_c,其中前一个未参加的action_name在同一天发生 . 然后随着天数差异增加直到第7天,这进展到第1天 . 这意味着到day_7,数字应始终小于或等于group_attended .

在某些情况下,用户的action_name仅为有人值守 . 在这种情况下,我们需要分配模式project_date以响应它们以获得天数差异 .