我有一个store_visits具有以下结构的表:
store_visits:
store_name: string
visit_count: integer
visit_date: date
Run Code Online (Sandbox Code Playgroud)
我的目标是创建一个查询,对于每个商店和给定的日期范围,将计算:
AVG(visit_count))访问的相对增加/减少率仅用于定向目的.它始终是线性比例.
我花了一天时间尝试构建MySQL查询来做到这一点,并且无法理解它.
任何帮助将不胜感激.
谢谢,-Scott
假设您只想比较日期范围前半部分和后半部分的商店访问量,下面是一个跨越过去 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;
Run Code Online (Sandbox Code Playgroud)
笔记
我不知道你想在哪里计算你的 1-4 增加量,所以我只是将其设置为百分比,你可以将其修改为你想要的任何逻辑。此外,您还需要根据需要更新子查询中的日期范围。
编辑: 刚刚将平均值更新为 ((endVisits + startVisits)/40),而不是 ((endVisits + startVisits)/2)。您还可以在子查询中使用 avg 函数,并将这些函数的总和除以 2 以获得整个期间的平均值。