sql >> Base de Datos >  >> RDS >> Mysql

mysql obtiene la diferencia en lugar de SUM

No existe una función agregada para la diferencia, pero dado que sabe exactamente qué filas usar, puede seleccionar cada valor como su propia subconsulta y luego restar las dos columnas entre sí en una sola declaración de selección.

SELECT a.op, b.op, a.op - b.op as diff
FROM (SELECT 10 as op) a
JOIN (SELECT 8 as op) b

Expresado de acuerdo con su esquema, probablemente se vería así:

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

Sin embargo, para usar este enfoque con regularidad en una aplicación, querrá manejarlo en función de las identificaciones u otra cosa fácilmente seleccionable y significativa.

Sin embargo, parece que quieres algo más. ¿Quizás esté interesado en la diferencia entre el máximo y el mínimo durante un intervalo de fechas?

SELECT MAX(P_QTY) - MIN(P_QTY) as diff
FROM rankhistory
WHERE rh_date BETWEEN '1438556400' AND '1438642800'