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