Fao*_*ech 1 mysql database sum difference
我有以下查询:
SELECT SUM(P_QTY)
FROM rankhistory
WHERE P_ID= '1'
AND RH_DATE>=1438556400
AND RH_DATE<1438642800
Run Code Online (Sandbox Code Playgroud)
上面的查询返回 268
结果集包含P_QTY的两个元素,即160和108
现在我想要的是能够接收差异而不是总和,所以我希望我的查询返回的是52,我如何通过SQL查询实现这一点?请注意,子查询可以返回多个结果,而预期的结果是总变化.例如,如果返回查询168 160 150,则结果应为18.
没有聚合函数的差异,但由于您确切知道要使用哪些行,因此可以选择每个值作为自己的子查询,然后在单个select语句中相互减去两列.
SELECT a.op, b.op, a.op - b.op as diff
FROM (SELECT 10 as op) a
JOIN (SELECT 8 as op) b
Run Code Online (Sandbox Code Playgroud)
根据您的架构表示,它可能看起来像这样:
SELECT a.op, b.op, a.op - b.op as diff
FROM (SELECT P_QTY as op FROM rankhistory WHERE P_QTY = 160) a
JOIN (SELECT P_QTY as op FROM rankhistory WHERE P_QTY = 108) b
Run Code Online (Sandbox Code Playgroud)
但是,要在应用程序中定期使用此方法,您需要根据ID或其他易于选择且有意义的内容来处理它.
听起来你想要别的东西.也许您对日期范围内的最大值和最小值之间的差异感兴趣?
SELECT MAX(P_QTY) - MIN(P_QTY) as diff
FROM rankhistory
WHERE rh_date BETWEEN '1438556400' AND '1438642800'
Run Code Online (Sandbox Code Playgroud)