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

mysql få forskel i stedet for SUM

Der er ingen aggregeret funktion til forskel, men da du ved præcis, hvilke rækker du skal bruge, kan du vælge hver værdi som sin egen underforespørgsel og derefter trække de to kolonner fra hinanden i en enkelt select-sætning.

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

Udtrykt i overensstemmelse med dit skema ville det sandsynligvis se sådan ud:

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

For at bruge denne tilgang regelmæssigt i en applikation, vil du dog gerne håndtere den baseret på ID'er eller noget andet, der er let at vælge og meningsfuldt.

Det lyder dog som om du vil noget andet. Måske er du interesseret i forskellen mellem maks. og min. i et datointerval?

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



  1. Postgresql vs. MySQL:hvordan sammenligner deres datastørrelser med hinanden?

  2. Aktivering af virtualisering i BIOS på bærbar eller stationær computer til Virtualbox VM

  3. Hvordan vælger du en kolonne ved hjælp af Hibernate?

  4. Sådan administreres MariaDB 10.3 med ClusterControl