在一张表中,我每天有几个小节
29011 2012-12-28 09:00:00
28701 2012-12-28 10:00:00
28830 2012-12-28 11:00:00
28353 2012-12-28 12:00:00
28642 2012-12-28 13:00:00
28583 2012-12-28 14:00:00
28800 2012-12-29 09:00:00
28751 2012-12-29 10:00:00
28670 2012-12-29 11:00:00
28621 2012-12-29 12:00:00
28599 2012-12-29 13:00:00
28278 2012-12-29 14:00:00
如何获得每天的第一个最后值之间的差异?
我想要这样的结果:
428 2012-12-28
522 2012-12-29
我试过了
SELECT (MAX(volume) - MIN(volume)),DATE_FORMAT(FROM_UNIXTIME(tstamp), '%Y-%m-%d') date FROM tank
GROUP BY DATE_FORMAT(FROM_UNIXTIME(tstamp), '%Y-%m-%d')
ORDER BY tstamp
但它不采取第一个和最后一个措施,而是采取最小值和最大值。
最佳答案
使用子选择获取当天的最小和最大时间戳,然后将结果与原始表连接两次,一次用于最小值,一次用于最大值以获取卷。然后计算:-
SELECT Sub1.JustDate, (b.volume - a.volume) AS VolumeDifference
FROM (
SELECT DATE_FORMAT(FROM_UNIXTIME(tstamp), '%Y-%m-%d') AS JustDate, MIN(tstamp) AS MinTimeStamp, MAX(tstamp) AS MaxTimeStamp
FROM tank
GROUP BY JustDate) Sub1
INNER JOIN tank a ON Sub1.MinTimeStamp = a.tstamp
INNER JOIN tank b ON Sub1.MaxTimeStamp = b.tstamp
这是假设它们是真正的 unix 时间戳,而不仅仅是无法判断哪个是最新的 CCYYMMDD 日期。
关于mysql - 每天的第一个值和最后一个值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434934/