Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql obtient la différence au lieu de SUM

Il n'y a pas de fonction d'agrégation pour la différence, mais comme vous savez exactement quelles lignes utiliser, vous pouvez sélectionner chaque valeur comme sa propre sous-requête, puis soustraire les deux colonnes l'une de l'autre dans une seule instruction de sélection.

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

Exprimé conformément à votre schéma, cela ressemblerait probablement à ceci :

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

Cependant, pour utiliser cette approche régulièrement dans une application, vous devrez la gérer en fonction d'ID ou de quelque chose d'autre facilement sélectionnable et significatif.

On dirait que vous voulez autre chose, cependant. Peut-être êtes-vous intéressé par la différence entre max et min au cours d'une plage de dates ?

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