sql >> Database >  >> RDS >> Mysql

mysql krijg verschil in plaats van SUM

Er is geen aggregatiefunctie voor verschillen, maar aangezien u precies weet welke rijen u moet gebruiken, kunt u elke waarde als zijn eigen subquery selecteren en vervolgens de twee kolommen van elkaar aftrekken in een enkele select-instructie.

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

Uitgedrukt in overeenstemming met uw schema, zou het er waarschijnlijk zo uitzien:

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

Als u deze benadering echter regelmatig in een toepassing wilt gebruiken, moet u deze afhandelen op basis van ID's of iets anders dat gemakkelijk te selecteren en zinvol is.

Het klinkt echter alsof je iets anders wilt. Misschien ben je geïnteresseerd in het verschil tussen max en min tijdens een periode?

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



  1. Hoe 2 of meer datumbereiken samen te voegen tot 1

  2. MySQL cartesiaans product tussen twee SELECT-instructies

  3. De `yield_per()`-problemen van SQLalchemy beter begrijpen

  4. LTRIM() Functie in Oracle