2017-10-25 21 views
1

を選択し、私は2つの作業MySQLのクエリがあります。2つのMySQLの間の値の差を取得

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

と2番目のクエリ:

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

両方のクエリはほぼ同じですが。 (2017年10月23日)前日 - 彼らは(2017年10月24日)前日のhighes値と前日の最高値を私に戻って与えます。

今私、今、MySQLはマイナス機能を実装していません。しかし、私は違いを計算する必要があります。私はNOT IN機能については赤ですが、この機能を正しく使用することはできません...

+2

どのような違いがありますか?マイナス何?最も高い値の間の差異?それらを減算するだけでスカラー副問い合わせについて読むことができます。 – philipxy

+0

私の質問はすべて回答済みです – user3882511

+0

あなたの質問を明確に編集してください。誰かがあなたが何を意味しているかを推測していて、彼らはあなたに幸運をもたらしました。それはあなたの質問を助けにはなりません。 – philipxy

答えて

1

あなたが最大値を取得するには、単一のクエリで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 
+0

hmm - 6行目でエラーが発生しました - > "FROM data" – user3882511

+0

@ user3882511内部クエリーのvalue2の後にカンマが追加されました –

+0

thx - >完璧です! – user3882511

関連する問題