我在mysql中创建了一个表。
CREATE TABLE t (id int,item int, dt DATE, qty INT);
INSERT INTO t VALUES
(1,1,'2007-1-1',5),(2,1,'2007-1-2',6), (3,1,'2007-1-3',7),(4,1,'2007-1-4',8),
(5,1,'2007-1-5',9),(6,1,'2007-1-6',10),(7,1,'2007-1-7',11),(8,1,'2007-1-8',12),
(9,1,'2007-1-9',13), (10,2,'2007-1-1',6), (11,2,'2007-1-2',7),(12,2,'2007-1-3',8),
(13,2,'2007-1-4',9), (14,2,'2007-1-5',10), (15,2,'2007-1-6',11),(16,2,'2007-1-7',12),
(17,2,'2007-1-8',13), (18,2,'2007-1-9',14);
我想为每件商品找到exponential moving average
。
所以我找到了一个代码。
select item,dt,qty,
@a := ( @a*.3 + qty*.7) AS moving_avg
from t
Join (select @a := 0) as X
group by item,moving_avg,qty,dt
order by item,qty,dt
我得到了结果。
但我想只选择每个项目的最后一行,我在图片中突出显示。
我的决赛桌应该只包含
item dt qty moving_avg
1 09-Jan-07 12:00:00 AM 13 12.571358275
2 09-Jan-07 12:00:00 AM 14 13.5715860340449
即。不同的项目及其对应的最后一行。 任何想法我该怎么做? 也许通过调整我的代码来移动平均值