java分组还是sql分组_SQL根据比较属性对用户进行分组

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

我有两个数据集 . 第一个是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以响应它们以获得天数差异 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值