mysql - 每天的第一个值和最后一个值之间的差异

标签 mysql sql

在一张表中,我每天有几个小节

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/

相关文章:

mysql - Spring、thymeleaf、JPA/hibernate、mysql UTF-8 字符保留在数据库中

java - 无法转换 getSingleResult() 的结果

php - MYSQL SET 数据类型的替代方案

mysql - 我如何编写这种查询(为每一行返回最新的可用数据)

php - 一个查询中的文章和评论

php - 存储和显示带有上标文本的文本

php - 将值插入数据库时​​代码中断

mysql - 如何优化同时依赖于 COUNT 和 GROUP BY 的查询?

mysql - 使用MySQL选取最近三个月的数据

sql - 如何在不更改总和的情况下舍入单个 SQL 请求中的列?