加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 数据库 > MySql > 正文

计算MySQL中随时间推移的增加或减少趋势

发布时间:2020-10-19 08:08:36 所属栏目:MySql 来源:互联网
导读:我有一个表store_visits具有以下结构:store_visits: store_name: string visit_count: integer visit_date: date 我的目标是创建一个查询,对于每个商店和给定的日期范围,将计算:日期范围内的平均访问次数(目前使用AVG(visit_count))商店访问是增加还是

我有一个表store_visits具有以下结构:

store_visits:
 store_name: string
 visit_count: integer
 visit_date: date

我的目标是创建一个查询,对于每个商店和给定的日期范围,将计算:

>日期范围内的平均访问次数(目前使用AVG(visit_count))
>商店访问是增加还是减少
>相对增加/减少的速率(1到4比例,其中1 =低速率,4 =高速率)

访问的相对增加/减少率仅用于定向目的.它始终是线性比例.

我花了一天时间尝试构建MySQL查询来做到这一点,并且无法理解它.

任何帮助将不胜感激.

谢谢,
斯科特 最佳答案 假设您只想将日期范围的前半部分中的商店访问与下半部分进行比较,这是一个跨越过去40天的示例,使用2个子查询来获取每个范围的计数.

select 
  ((endVisits + startVisits)/40) average,(endVisits > startVisits) increasing,((endVisits - startVisits)/(startVisits) * 100) percentChange 
from 
  (select sum(visit_count) startVisits 
    from store_visit 
    where 
      visit_date > current_date - 40 
      and visit_date <= current_date - 20) startRange,(select sum(visit_count) endVisits 
    from store_visit 
    where  
      visit_date > current_date - 20) endRange;

笔记

我不知道你想如何计算你的1-4增加量,所以我只是把它变成了一个百分比,你可以修改它到你想要的任何逻辑.此外,您还需要根据需要更新子查询中的日期范围.

编辑:刚刚将平均值更新为((endVisits startVisits)/ 40)而不是((endVisits startVisits)/ 2).您还可以在子查询中使用avg函数,并将它们的总和除以2,以获得整个期间的平均值.

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读