[英]My SQL query Difference between two Dates?
我的 DataBaseTable 如下所示
> Date Value
> 2020-09-05 00:00:05 20.58 --> first value
> 2020-09-05 00:01:05 20.59
> .....
> 2020-09-05 23:59:05 21.00 --> last value
結果應該是 21.00 - 20.58 = 0.42
例如,我想在一天內建立差異。 通過這個查詢,我得到了第一個和最后一個值,然后在我的 c# 項目中我可以計算出差異
WITH T AS (
SELECT *
FROM fernleitung
WHERE `Date` between '2020.09.05-00:00:00' AND '2020.09.06-00:00:00'
)
(SELECT * FROM T ORDER BY Date LIMIT 1)
UNION ALL
(SELECT * FROM T ORDER BY Date DESC LIMIT 1);
有沒有更簡單的方法來使用 SQL 查詢來做到這一點?
非常感謝,馬庫斯
使用聚合
select max(value)-min(value)
from tablename where `Date` between '2020.09.05-00:00:00' AND '2020.09.06-00:00:00'
group by date(datecol)
@Fahmi 的答案將返回最后一個事件和第一個事件之間的值差異,但適用於所有日期。 因此,如果您有 1 年的數據,您將有 365 行,您必須在其中找到正確的日期。
這在某些情況下可以工作,但對於您的實際情況,您應該只執行以下操作,它將僅返回該日期的計算(因此為一行)
SELECT (MAX(value) - MIN(value) ) AS the_difference
FROM tablename
WHERE `Date` between '2020.09.05-00:00:00' AND '2020.09.06-00:00:00'
我的意思是在這種情況下,價值不僅可以增加,而且可以在一天內減少。 所以在這種情況下你不能使用 MIN 或 MAX 函數。 由於引入了 MySQL 8.0 窗口函數,它們也可以使用:
select distinct
date(date),
last_value(value) over (partition by date(date)) -
first_value(value) over (partition by date(date)) as day_diff
from fernleitung;
這里 yiu 可以看現場 SQL 小提琴
較舊的 MySQL 版本需要更復雜的代碼,但也可以解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.