我想退回产品及其最新值和上一小时的值。
我有一个产品表:
id, name, type (and so on)...
我有一个值(value)观表:
id_prod, timestamp, value
类似于:
12:00:00 = 10
12:15:00 = 10
12:30:00 = 10
12:45:00 = 10
13:00:00 = 10
13:15:00 = 10
13:30:00 = 10
我想要一个返回最新值 (13:30:00) 以及一小时前值总和的查询。这应该返回:
time = 13:30:00
latestread = 10
lasthour = 40
我几乎要做的工作是:
SELECT *,
(SELECT value FROM values S WHERE id_prod=P.id
ORDER BY timestamp DESC LIMIT 1) as latestread,
(SELECT sum(value) FROM values WHERE id_prod=D.id and
date_created>SUBTIME(S.date_created,'01:00:00')) as trendread
FROM prod P ORDER BY name
但这会失败,并显示“'where 子句'中未知列'S.date_created'”
有什么建议吗?
最佳答案
如果我正确理解你想要做什么,那么你会得到类似的东西:
SELECT p.id, max(date_created), sum(value), mv.max_value
FROM product p
JOIN values v on p.id = v.product_id
JOIN (SELECT product_id, value as max_value
FROM values v2
WHERE date_created = (SELECT max(date_created) FROM values WHERE product_id=v2.product_id)) mv on product_id=p.id
WHERE date_created between DATE_SUB(now(), INTERVAL 1 HOUR)) and now()
GROUP BY p.id
ORDER BY p.id
关于mysql : Get latest value and sum of values from previous hour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830476/