根据每个用户的不同值筛选值

v7pvogib  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(300)

我试图理解如何在mysql中做我通常在python中做的事情。
我有一个sales表,以sale\u date、user\u id和price\u usd作为列。每一行都是用户的一个命令。我想得到一个新表,其中包含了所有的订单,这些订单的成本比用户上一次的订单要高(所以在这张图中,只有黄色的行)。
我知道如何为每个用户获取一个带有最后一个顺序的表,但我无法将其保存在数据库中。如何通过用户id将每一行的价格与不同的值进行比较,并在一次“突击”中得到较大的价格?
谢谢

gwo2fgha

gwo2fgha1#

如果您运行的是mysl 8.0,则可以使用窗口函数:

select t.*
from (
    select
        t.*,
        first_value(price_usd) 
            over(partition by user_id order by sale_date desc) last_price_usd
    from mytable t
) t
where lag_price_usd is null or price > last_price_usd

在早期版本中,可以使用相关子查询:

select t.*
from mytable t
where t.price_usd > (
    select price_usd
    from mytable t1
    where t1.user_id = t.user_id
    order by sale_date desc
    limit 1
)

相关问题