如何选择特定日期的最高值?
我的数据看起来像:
id,value_id,sensor_id,value,time(datetime)
1,123,gas,10,2018-01-14 01:00:00
1,123,gas,20,2018-01-14 02:00:00
我试着看一些东西(也和max一起),比如:
SELECT value
FROM table
WHERE sensor_id = "123"
AND value_id = "gas"
AND time = "2018-01-14"
order by time;
limit 1;
我需要选择某个日期(不是间隔,即2017-01-01->2017-01-03,仅针对指定日期:2018-01-14)记录的特定数据的最高值。
但我得到的是错误或错误的值。
2条答案
按热度按时间jfgube3f1#
尝试此查询:
用单引号代替双引号。
当您想要获得最高值时,您应该对列进行降序(desc)。如果是最高值,不要按时间排序,你可以
select max(value)
在这种情况下,因为它是返回字段,所以不需要order by和limit。时间的事情我更喜欢做这个替换,因为其他方式它不会与时间戳一起工作,而且这种方式它将始终工作,无论列的类型是date还是timestamp。
bihw5rsg2#
这需要一些嵌套查询。
首先,你想知道最新情况
time
每个日期的每个传感器。你是这样理解的
然后你想取回
value
这些行的列。看起来像这样有几个小技巧使这成为可能。一是使用max(date)。。。按日期分组(date),以查找每天的最新时间。另一个是连接回原始表以检索
value
列,