求sql大神
直接上sql语句
select * from (select *,count(user_id) as ct,from_unixtime(last_update, '%Y-%m-%d %H:%i:%S') from say_bigdata where user_id !=14807 and user_id !=0 and
DATE_SUB(CURDATE(), INTERVAL 3 MONTH) <= from_unixtime(last_update, '%Y-%m-%d') and
CONCAT(type,CONCAT('_',target_id)) in (select CONCAT(type,CONCAT('_',target_id)) from say_bigdata where user_id=14807 and
DATE_SUB(CURDATE(), INTERVAL 3 MONTH) <= from_unixtime(last_update, '%Y-%m-%d')) GROUP BY user_id limit 5) s ORDER BY ct desc;
我实在是没有什么高深的sql语句的经验,求大神详细解析一下这段语句到底是怎么个意思。如果可以的话,我想再统计这里去用户3个月内的100条数据应该怎么改。
也是接的活,现在的逻辑如下:
首先获取单天或者180天内有浏览记录的用户 (获得user_id)
然后用查找这些用户的浏览记录,取前一个月的 (获得浏览记录列表)
然后分析这些浏览记录中的浏览用户 (再次获得user_id)
最后最叠加 。。。
例如user_id 1 访问了 page 1 、 2 、3 、4 、5 、6 、7
例如user_id 2 访问了 page 1 、 2 、3 、4 、5
例如user_id 3 访问了 page 1 、 2 、3
然后叠加
1跟2匹配了5次
1跟3匹配了3次
2跟3匹配了3次
最后是我取这些数据的3个月内的前100条数据
希望大神能给予指点!!!
拜谢!!!!