从MariaDB输出两个浮点值之间的差值作为每日差值和

lb3vh1jj  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(113)

我在MariaDB表中有以下内容:x1c 0d1x
表的结构如下:

每天可以有几个“中间值”,这样我就可以使用下面的SQL命令:

SELECT
  MAX(PayLoad_REAL) - MIN(PayLoad_REAL) AS PayLoad_REAL_Difference
FROM
  TEST_STATUS
WHERE
  Topic = 'test'
  AND DATE_TIME BETWEEN '2023-12-11' AND '2023-12-12';

字符串
得到从2023-12-11到2023-12-12过滤的差值。在这种情况下,20.5 - 10 = 10.5,但我得到7作为结果。
它是一个每天多次向数据库发送值的电能表。我想使用查询来找出每天的差值有多高。在上面的示例中,11.12.23上的最后一个阅读是10,12.12.23上的阅读是20.5,这导致一天的差值为10.5
我需要改变什么/我做错了什么?
非常感谢

ybzsozfc

ybzsozfc1#

DATE_TIME字段定义为timestampWHERE子句的日期介于2023-12-11和2023-12-12之间。
在图像中的行中,前三行将符合条件,因为最后一行的时间戳值大于2023-12-12。
行的最大值PayLoad_REAL为10,最小值为3,两者之差为7。
如果你只想与日期部分进行比较,请将时间戳转换为日期:

AND CAST(DATE_TIME as date) BETWEEN '2023-12-11' AND '2023-12-12';

字符串
如果你只想得到一天的数据

AND CAST(DATE_TIME as date) = '2023-12-11';

vof42yt1

vof42yt12#

现在我找到了一种计算每日差额的方法,它一方面计算差额,另一方面查询每日最高值:

SELECT
  DATEDIFF('2023-12-12', '2023-12-11') * (
    COALESCE((SELECT MAX(PayLoad_REAL) FROM TEST_STATUS WHERE DATE_TIME = '2023-12-12'), 0) -
    COALESCE((SELECT MAX(PayLoad_REAL) FROM TEST_STATUS WHERE DATE_TIME = '2023-12-11'), 0)
  ) AS day_difference;

字符串

相关问题