我试图了解如何在MySQL中做我通常在python中做的事情。
我有一个销售表,其中sales_date,user_id和price_USD为列。每行都是用户下的订单。我想得到一个新表,其中包含所有订单的价格都比用户上次下单的价格高(因此在此图片中,只有黄色行)。
我知道如何获取每个用户的最后顺序的表,但是我无法将其保存在数据库中。如何通过user_id将每一行的价格与不同的值进行比较,然后一次获得较大的价格呢?
谢谢
如果运行的是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
)