簡體   English   中英

數據庫/MySQL - 計算給定表的能耗

[英]Database / MySQL - Calculate Energy Consumption for given table

我想從這個 openhab 持久性表中計算能源消耗的總和,其中包含我的燈當前能源消耗的行:

+---------------------+--------+
| time                | value  |
+---------------------+--------+
| 2022-10-08 21:48:08 |      0 |
| 2022-10-08 21:56:52 |  13.48 |
| 2022-10-08 21:56:57 |  13.63 |
| 2022-10-08 21:57:06 |  13.68 |
| 2022-10-08 21:57:09 |  13.63 |
| 2022-10-08 21:57:22 |  13.68 |
| 2022-10-08 21:57:39 |  13.73 |
| 2022-10-08 21:57:52 |  13.68 |
| 2022-10-08 21:57:54 |  13.73 |
| 2022-10-08 21:58:06 |  13.78 |
| 2022-10-08 21:58:09 |  13.73 |
| 2022-10-08 21:58:22 |  13.78 |
| 2022-10-08 21:58:37 |  13.73 |
| 2022-10-08 21:58:39 |  13.78 |
| 2022-10-08 21:58:54 |  13.83 |
| 2022-10-08 21:59:06 |  13.78 |
| 2022-10-08 21:59:22 |  13.73 |
| 2022-10-08 21:59:24 |  13.78 |
| 2022-10-08 22:00:11 |  13.73 |

此表表示當前日期和時間的功耗值。

意思是:在下一個數據集插入新值之前,功耗不會改變。 對於當前和具有不同值的后續數據集之間的時間,功耗是恆定的。

我不知道如何獲得持續多長時間的瓦數。 我的目標是得到總和,它應該以瓦時或千瓦時為單位。

有人對我有任何提示嗎? 謝謝

編輯:2022-10-08 21:59:06 至 2022-10-08 21:59:22 當前瓦數為 13.78。

13.78W 持續 16 秒:13.78W * 16s = 220,48 Ws

在這里搜索,是上面計算的瓦秒的總和。

我們首先必須將表本身與以下行(當前行時間之后的最近時間)連接起來:

SELECT A.time as time1, B.time as time2, A.value as value1, B.value as value2 FROM OpenHAB.item0022 as A left join OpenHAB.item0022 as B ON B.time = (SELECT time FROM item0022 WHERE time > A.time ORDER BY time ASC LIMIT 1)

完成后,我們可以得到當前數據集和后續數據集之間的秒數差異,通過一些計算,並將其除以 60 秒 * 60 分鍾 * 1000(瓦特到千瓦特)我們得到正確的結果。

SELECT SUM(TIMESTAMPDIFF(SECOND,time1,time2)*value1)/(60*60*1000) as Sum_kWh FROM 

    (
SELECT A.time as time1, B.time as time2, A.value as value1, B.value as value2 FROM OpenHAB.item0022 as A left join OpenHAB.item0022 as B ON B.time = (SELECT time FROM item0022 WHERE time > A.time ORDER BY time ASC LIMIT 1)
) as q1 WHERE value1 <> 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM