Mysql
 sql >> Database >  >> RDS >> Mysql

mysql ottiene la differenza invece di SUM

Non esiste una funzione di aggregazione per la differenza, ma poiché sai esattamente quali righe utilizzare, puoi selezionare ciascun valore come una propria sottoquery, quindi sottrarre le due colonne l'una dall'altra in un'unica istruzione select.

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

Espresso secondo il tuo schema, probabilmente sarebbe simile a questo:

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

Per utilizzare regolarmente questo approccio in un'applicazione, tuttavia, ti consigliamo di gestirlo in base a ID o qualcos'altro facilmente selezionabile e significativo.

Sembra che tu voglia qualcos'altro, però. Forse sei interessato alla differenza tra massimo e minimo durante un intervallo di date?

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