簡體   English   中英

我的 SQL 查詢兩個日期之間的差異?

[英]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.

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