sql >> Databáze >  >> RDS >> Mysql

mysql získá rozdíl místo SUM

Neexistuje žádná agregační funkce pro rozdíl, ale protože přesně víte, které řádky použít, můžete každou hodnotu vybrat jako svůj vlastní poddotaz a poté od sebe odečíst dva sloupce v jediném příkazu select.

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

Vyjádřeno v souladu s vaším schématem by to pravděpodobně vypadalo takto:

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

Chcete-li však tento přístup v aplikaci používat pravidelně, budete jej chtít ovládat na základě ID nebo něčeho jiného, ​​co lze snadno a smysluplně vybrat.

Zdá se však, že chcete něco jiného. Možná vás zajímá rozdíl mezi maximem a minimem během časového období?

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



  1. Proveďte while smyčku v SQL Server 2008

  2. T-SQL rozdělený řetězec

  3. Jak přidat pozice hodnocení do řádků pomocí DENSE_RANK() v SQL

  4. Vygenerujte třídu z databázové tabulky