与MYSQL中的旧条目相比,有没有一种按价值增加排序的方法



我想在三天内按百分比增加订购每个ID。如果三天前没有条目,则应将日期提前到今天。在下文中,我解释了数据库环境的布局。

我在MYSQL中有一个具有以下结构的表(注意:ID列不是唯一的。(。

CREATE TABLE test (
ID INT(3) NOT NULL,
value INT(3) NOT NULL,
date DATE NOT NULL
);

每天都会为n个ID插入新值。然后表格将看起来有点像这样:

日期2020-12-082020-12-072020-12-062020-12-06
ID
14
14
17
152020-12-05
2102020-12-08
282020-12-07
27
3102020-12-08
4102020-12-08

这有点棘手,因为MySQL没有一个"第一个"/"最后一个";聚合函数。一种方法使用窗口函数:

select id, oldest_value, newst_value
from (select t.*,
row_number() over (partition by id order by date) as seqnum,
first_value(value) over (partition by id order by date) as oldest_value,
first_value(value) over (partition by id order by date desc) as newest_value
from test t
) t
where seqnum = 1
order by newest_value / oldest_value;

这需要MySQL 8+。这里有一个db<gt;不停摆弄

相关内容

最新更新