我有一个表store_visits
,其结构如下:
store_visits:
store_name: string
visit_count: integer
visit_date: date
我的目标是为每个商店和给定的日期范围创建一个查询:
AVG(visit_count)
)访问的相对增加/减少率仅用于定向目的。它始终是一个线性标度。
我花了一天时间尝试构建MySQL查询来做到这一点,并且无法理解它。
非常感谢任何帮助。
谢谢, 斯科特
答案 0 :(得分: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,以获得整个期间的平均值。