-2
我在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);
我想找到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
我得到了結果。
,但我想選擇排的每個項目,我在我的形象都強調只有最後一個條目。
i'e我最後的表應該只包含
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
即。與其對應的最後一行不同的項目。 任何想法如何做到這一點? 可能通過調整我的代碼均線本身
先生,它不能有價值會因爲日期而改變,因爲它是一個移動平均值 – Shubham
當我在同一日期有不同數量的多個項目時,代碼不起作用。 我試着在你的代碼中做總和(數量),但它移動平均值給我7的倍數。有什麼方法可以解決它? (http://sqlfiddle.com/#!9/25ea42/4) – Shubham
有一件事,我認爲是創建一箇中間表t2,它將做sum(product_views),然後使用t2移動avg .. 有什麼更好的點子?而不創建中間表。 – Shubham