mysql - 在最后一行除外的情况下使用滞后函数

标签 mysql sql amazon-redshift

我想获得last_value和7天前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

请告诉我你们是否有其他选择?谢谢!

最佳答案

要将今天与 7 天前进行比较并获得 %,您需要这样的东西

select 
 date,
 number_of_users as number_of_users_current_date,
 lag(number_of_users,7) over(order by date) number_of_users_lag_7_day
 (number_of_users::float -  lag(number_of_users::float,7) over(order by date)) / number_of_users::float as percent_increase
from 
 my_table
where date - current_date()

关于mysql - 在最后一行除外的情况下使用滞后函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815753/

相关文章:

mysql - SQL SELECT 语句显示基于值 ("win"或 "loss"的赢/输数)

mysql - SQL查询生成排行榜并选择一个玩家信息

amazon-redshift - 无论如何,是否可以使用单个 Firehose 传输流将数据写入多个 Redshift 表

mysql 查看我的查询输出我需要不同的方式

php - 使用 Laravel 使用自定义变量更新语句

Mysql 'insert if not exists' , 防止 'overlap'

sql - 使用按日期分组的 sql 查询

mysql查询订单已支付的列表

database-performance - Redshift 选择 * 与选择单列

python - 使用适当的变量类型将 CSV 文件从 redshift 导出到本地