簡體   English   中英

獲取兩個mysql選擇之間的值差異

[英]Get the difference of values between two mysql selects

我有兩個可用的 MySQL 查詢:

SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 1)

第二個查詢:

SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 2)

兩個查詢幾乎相同。 他們給了我前一天 (2017-10-24) 的最高值和前一天 - 前一天 (2017-10-23) 的最高值。

現在我現在,mysql 沒有實現減號功能。 但我必須計算差異。 我對 NOT IN 功能感到不滿,但我無法正確使用此功能...

謝謝你的幫助!

您可以在單個查詢中使用CASE語句來獲取最大值,然后在外部查詢中進行減法

SELECT value1 - value2 as diff
FROM (
    SELECT 
    MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value1,
    MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 2) THEN value ELSE 0 END) as value2
    FROM data 
    WHERE value_id = '123'
) a

如果你不知道哪個值會更大,上面可以產生一個負值的結果,也可以處理這個問題,在外部查詢中添加 CASE

SELECT CASE WHEN value1 >= value2
       THEN value1 - value2
       ELSE value2 - value1
       END as diff
FROM (....) a

暫無
暫無

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

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