在mysql中选择具有相应最后一行的不同项目

时间:2016-12-05 09:15:38

标签: mysql

我在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);

enter image description here

我想为每件商品找到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

我得到了结果。

enter image description here

但我想只选择每个项目的最后一行,我在图片中突出显示。

我的决赛桌应该只包含

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

即。不同的项目及其对应的最后一行。 任何想法我该怎么做? 也许通过调整我的代码来移动平均值

0 个答案:

没有答案