Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql uzyskaj różnicę zamiast SUMA

Nie ma funkcji agregującej różnicującej, ale ponieważ wiesz dokładnie, których wierszy użyć, możesz wybrać każdą wartość jako własne podzapytanie, a następnie odjąć dwie kolumny od siebie w jednej instrukcji select.

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

Wyrażony zgodnie z Twoim schematem, prawdopodobnie wyglądałoby to tak:

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

Aby jednak regularnie korzystać z tego podejścia w aplikacji, należy obsługiwać je w oparciu o identyfikatory lub coś innego, co można łatwo wybrać i które ma znaczenie.

Wygląda na to, że chcesz czegoś innego. Być może interesuje Cię różnica między wartością maksymalną a minimalną w zakresie dat?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Baza danych zwróciła nieprawidłową wartość w QuerySet.dates()

  2. Optymalizacja zapytań dla następnego i poprzedniego elementu

  3. Class.forName(com.mysql.jdbc.Driver) nie szuka w pliku jar dla klasy

  4. Błąd:metoda lub operacja nie jest zaimplementowana. podczas rusztowania bazy danych MYSQL

  5. procedura składowana mysql z INTO OUTFILE