Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql erhält den Unterschied anstelle von SUM

Es gibt keine Aggregatfunktion für den Unterschied, aber da Sie genau wissen, welche Zeilen zu verwenden sind, können Sie jeden Wert als eigene Unterabfrage auswählen und dann die beiden Spalten in einer einzigen Auswahlanweisung voneinander subtrahieren.

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

Ausgedrückt nach Ihrem Schema würde es vermutlich so aussehen:

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

Um diesen Ansatz regelmäßig in einer Anwendung zu verwenden, sollten Sie ihn jedoch auf der Grundlage von IDs oder etwas anderem handhaben, das leicht auswählbar und aussagekräftig ist.

Es klingt aber so, als ob du etwas anderes willst. Vielleicht interessiert Sie der Unterschied zwischen Max und Min während eines Datumsbereichs?

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