5

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

store_visits:
 store_name: string
 visit_count: integer
 visit_date: date

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

  • 日期范围内的平均访问次数(当前使用AVG(visit_count)
  • 实体店访问量是增加还是减少
  • 增加/减少的相对比率(1 到 4 级,其中 1 = 低比率,4 = 高比率)

访问量的相对增加/减少率仅用于定向目的。它总是一个线性比例。

我花了一天时间尝试构建 MySQL 查询来执行此操作,但我无法理解它。

任何帮助将不胜感激。

谢谢,-斯科特

4

1 回答 1

4

假设您只想比较日期范围前半部分和后半部分的实体店光顾次数,下面是一个跨越过去 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 以获得整个期间的平均值。

于 2011-06-22T18:38:00.540 回答