A-A+

Mysql按时间段分组查询来统计会员的个数

2017年10月17日 编程技术 暂无评论

今天碰到个需求需要在log日志表中按照时间段来统计会员的个数,经努力找到了两种解决方案,记录下来以备使用.

1.使用case when方法,不建议使用,代码如下:

  1. SELECT   
  2.     COUNT(DISTINCT user_id) user_count,   
  3.     CASE   
  4.     WHEN create_time>1395046800 AND create_time<1395050400 THEN '17:00-18:00'   
  5.     WHEN create_time>1395050400 AND create_time<1395054000 THEN '18:00-19:00'   
  6.     WHEN create_time>1395054000 AND create_time<1395057600 THEN '19:00-20:00'   
  7.     WHEN create_time>1395057600 AND create_time<1395061200 THEN '20:00-21:00'   
  8.     ELSE 'unknown'   
  9.     END AS `date` www.xiaohuboke.com   
  10. FROM   
  11.     tb_user_online_log   
  12. WHERE create_time >1395046800 AND create_time<1395061200   
  13. GROUP BY   
  14.     `date`   
  15. ORDER BY create_time  

Mysql按时间段分组查询来统计会员的个数.

2.使用时间戳转换后分组,代码如下:

  1. SELECT   
  2.     COUNT(DISTINCT user_id) user_count,   
  3.     FROM_UNIXTIME(   
  4.         create_time,   
  5.         '%Y-%m-%d %H:00:00'   
  6.     ) AS hours,   
  7.     CONCAT(FROM_UNIXTIME(create_time, '%Y-%m-%d %H:00'),'-',FROM_UNIXTIME(create_time, '%H')+1,":00"AS `date`   
  8. FROM   
  9.     tb_user_online_log   
  10. GROUP BY   
  11.     hours   
  12. ORDER BY create_time  
标签:

给我留言