【发布时间】:2020-01-20 00:42:10
【问题描述】:
我想获得 7 天前 last_value 和 last_value 之间的百分比差异。 这就是我现在正在做的方式,但希望有任何其他建议或替代方案:
示例 这个
日期----用户数
01/01:5005
01/02 : 6555
...
current_date-7: 5553 ...
当前日期: 6000
我正在尝试比较 6000 和 5553。我正确的做法是:
select
date,
case
when date=current_date then number_of_users
else lag(number_of_users,7) over(order by date) end as lag_7_day
from
my_table
如果你们有任何替代方案,请告诉我?谢谢!
【问题讨论】:
-
嗨,这是关于 MySQL 还是 Redshift?它们是不同的数据库系统,因此您的问题只能用您正在使用的系统进行标记。
-
我迷路了。您的查询与计算百分比差异的问题有什么关系?
-
如果您保证每个日期有严格的一条记录并且严格没有间隔,那么您可以使用
SELECT date, value, LAG(value, 7) OVER (order by date)。如果按日期存在间隙或重复,您可以使用由t1.date = t2.date + INTERVAL 7 day连接的 2 个表格副本(如果t2中存在该值的间隙,您将获得NULL,对于重复,您可能会采用一些特定的值,例如例如,MAX()) 或相关查询(如果不存在,您可以在其中近似值)。 -
我不清楚您的要求 - 您是希望输出中的 1 行包含最后一行和 7 天前的行,还是希望所有行都包含 7 天前的行?跨度>
标签: mysql sql amazon-redshift