文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用位运算 数据分析 - 用户历史

使用位运算 数据分析 - 用户历史

时间:2010-10-21  来源:liukaiyi


为解决用户的同属性 大量操作存储问题 :
数据库表结果:    用户 |  属性域+  |  当前时间 | 最小时间力度 | int  | int .....
比如 :
  用户1 | 频道1 | ....   | 2010-10-01 | 1天   | 0 
  .....

表结构为 ( 预订表存储 一个月 2010-10 ) : create table test (     uid int primary key ,     domain varchar(20),    starttime datetime,    endtime  datetime,    touch int ,    unique(uid,domain,starttime ) );


用户分别在 10-05 ,10-13  ,10-20 天来过
#10-05 减去 10-01  为 5 天  insert into test values    (1,'yy-xx','2010-10-01','2010-10-05',1<<DATEDIFF(endtime,starttime )  )  on duplicate key     update endtime = '2010-10-05'  ,             touch = ( 1<<DATEDIFF(endtime,starttime)|touch) ; 
# 10-13 减去 10-01  为 13天 
insert into test values    (1,'yy-xx','2010-10-01','2010-10-13',1<<DATEDIFF(endtime,starttime )  )  on duplicate key     update endtime = '2010-10-13'  ,             touch = ( 1<<DATEDIFF(endtime,starttime)|touch) ; 
# 10-20 减去 10-01  为 20 天  insert into test values    (1,'yy-xx','2010-10-01','2010-10-20',1<<DATEDIFF(endtime,starttime )  )  on duplicate key     update endtime = '2010-10-20'  ,             touch = ( 1<<DATEDIFF(endtime,starttime)|touch) ; 
当前月 来的 总天数  : >  select BIT_COUNT(touch) from test ;

上周来天数 (2010-10-03 到 2010-10-09) : >  select    bit_count(     ( touch >> datediff('2010-10-03',starttime) ) &    (1<<datediff('2010-10-09','2010-10-03'))-1   ) from test ;

还有 许多这样的想法 , 后面再说吧 下班 ~ 




相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载