巴扎黑2017-04-18 10:33:06
原始表(假设):
record_id uid name opr_type c_time
1 10 cxl land 2016-12-26 08:00:00
2 10 cxl out 2016-12-26 23:00:00
最终生成的表:
用户名 日期(asc) 当天第一次登陆时间 当天最后一次登出时间 登陆时长(结果非准确值)
cxl 2016-12-26 2016-12-26 08:00:00 2016-12-26 15:00:00 3小时10分
cxl 2016-12-27 2016-12-26 08:30:00 2016-12-26 23:00:00 6小时10分
具体流程:
1. 日期分组
2. 当天第一次登陆时间
2.1 第一种情况:若当天第一条记录操作类型是 登出,那么 当天第一次登陆时间 = 00:00:01
2.2 第二种情况:若当天第一条记录操作类型是 登陆,那么 当天第一次登陆时间 = c_time
3. 当天最后一次登出时间
3.1 第一种情况:若当天最后一条记录操作类型是 登陆,那么 当天最后一次登出时间 = 23:59:59
3.2 第二种情况:若当天最后一条记录操作类型是 登出,那么 当天最后一次登出时间 = c_time
4. 登陆时长
4.1 当天最后一次登出时间 - 当天第一次登陆时间
提供下思路哈,具体实现起来个人觉得很不容易(逻辑处理需用到php,分页的时候也较麻烦,得按照日期进行分页显示,而不能像 limit 1 , 10 这样按取出的记录数进行分页 ,单sql无法得出最终表结构),所以,就只能到这儿了....回复0