我想跟踪我的用户如何在我的网站上通过他们的生命周期进入独家状态,例如:
registered
updated profile
first post
etc.
虽然状态总是排他性的 - 意味着一次一个特定的状态 - 用户也可能属于各种组和子组,例如:
Group Subgroup
Referred Search
Referred Email
Engineer Software
Engineer Hardware
我计划将这些状态更改记录到 mySQL 表中,相应地更新每个用户的唯一行:</p>
user_lifecycle tbl
---------------------
user_id (pk)
join_date
state
而且我认为组应该存储在另一个表中,因为用户可以同时属于多个:
user_groupings tbl
-------------------------
grouping_id (auto-counter - pk)
user_id
group
subgroup
为了使用第 3 方工具提供正确的图表(用于群组分析),我需要查询并导出为以下汇总格式(需要将其转换为 CSV)
Group,Subgroup,Joined,Registered,Updated Profile,First Post
Referred,Search,10/25/12,5,5,5
Referred,Search,10/26/12,10,10,0
Referred,Email,10/25/12 5,5,5
Referred,Email,10/26/12 5,0,5
Engineer,Software,10/25/12,0,5,10
Engineer,Software,10/26/12,15,5,0
Engineer,Hardware,10/25/12,10,5,0
Engineer,Hardware,10/26/12,5,5,5
Total,,10/25/12,10,10,10
Total,,10/26/12,20,10,5
我的表结构适合这个吗?如果是这样,我该如何查询以提供所需的结果?如果没有,你会改变什么,相应的查询是什么?如果有帮助,我也将使用 PHP 服务器端。我认为这可能有效:
SELECT join_date AS Date, SUM(IF(state = ‘registered’, 1, 0)) AS 'Registered', SUM(IF(state = ‘updated profile’, 1, 0)) AS 'Updated Profile', SUM(IF(state = ‘first post’, 1, 0)) AS 'First Post'
FROM user_lifecycle
GROUP BY join_date
但我不确定如何正确添加另一个表并添加其他分组。