请教个mysql统计思路。有效期内的活动按天统计数量

z109876543210 2018-08-27 10:29:39
每个活动有效期不固定。
怎么按天统计活动数量???

先查出最大有效期,最小有效期,然后再统计? 这样好像效率不高
...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-08-28
  • 打赏
  • 举报
回复
感觉...同样也不是可学的态度
z109876543210 2018-08-28
  • 打赏
  • 举报
回复
感觉只能做一个临时表。先查出最大有效期,最小有效期,每天一条记录插进去。再left join查询。


引用 2 楼 xuzuning 的回复:
BETWEEN

好像...可不是科学的态度


引用 1 楼 qq_20203755 的回复:
写入缓存, 一段时间更新一次
xuzuning 2018-08-28
  • 打赏
  • 举报
回复
BETWEEN

好像...可不是科学的态度
伟洪winni 2018-08-28
  • 打赏
  • 举报
回复
写入缓存, 一段时间更新一次
z109876543210 2018-08-28
  • 打赏
  • 举报
回复
数据不多,先应付,缓存都懒得做了



//生成统计数据//coupon_stats表couponid+createtime约束
$coupon = $this->_getlist('coupon', 'id,getbegintime,getendtime');
foreach($coupon as $v){
$sql = 'INSERT IGNORE INTO `coupon_stats` (`couponid`, `createtime`) VALUES ';//可以放外面但可能sql过长
if($v['getbegintime'] > time())continue;
if($v['getendtime'] > time())$v['getendtime'] = strtotime(date('Y-m-d 23:59:59'));
for($i = $v['getbegintime']; $i < $v['getendtime']; $i += 86400){
$sql .= "('".$v['id']."', ".$i."),\n";
}
$this->db->query(substr($sql, 0, -2));
}

z109876543210 2018-08-28
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
感觉...同样也不是可学的态度


有建议吗?
z109876543210 2018-08-28
  • 打赏
  • 举报
回复
引用 5 楼 JNHASDKGJOLSD 的回复:
1、可以建个统计表
2、在参与活动的地方,累加统计更新到缓存。
3、写个脚本,定时把昨天统计好的缓存更新到数据库里的统计表
4、读取显示的时候,今日统计都读取缓存,往日直接读统计表


这思路可以。新建/修改活动时生成统计数据
JNHASDKGJOLSD 2018-08-28
  • 打赏
  • 举报
回复
1、可以建个统计表
2、在参与活动的地方,累加统计更新到缓存。
3、写个脚本,定时把昨天统计好的缓存更新到数据库里的统计表
4、读取显示的时候,今日统计都读取缓存,往日直接读统计表

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧