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

MySQL pokazuje sumę różnicy dwóch wartości

Chcesz zsumować różnice między kolejnymi wierszami.
Powiedz na przykład, że masz te wartości dla kolumny kwh :

kwh
---
10
12
14
17
25
32

więc różnice są następujące:

kwh_diff
--------
0
12-10
14-12
17-14
25-17
32-25

Suma tych różnic jest równa 32-10 czyli:

Potrzebujesz więc funkcji okna FIRST_VALUE() aby uzyskać te wartości:

SELECT DISTINCT n.`name`, n.`customer_id`, m.`msn`, 
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` DESC) -
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` ASC) AS kwh_diff
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 5 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

i nie jest potrzebne żadne podzapytanie ani agregacja.

Zachowałem w swoim kodzie PARTITION BY n.customer_id ponieważ używasz go w swoim kodzie, chociaż możesz potrzebować PARTITION BY n.customer_id, m.msn .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić zestaw znaków i sortowanie tabeli w MySQL?

  2. Jak podzielić rekordy tabeli MySQL na pół, aby wyświetlić je z każdej strony strony?

  3. wywołanie jquery ajax, aby ustawić wybrane opcje z tabeli MySql

  4. TypeError:obiekt „NoneType” nie jest indeksowany w Flask, aplikacji mysql

  5. Jak uzyskać surowe, skompilowane zapytanie SQL z wyrażenia SQLAlchemy?