Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL hiển thị tổng chênh lệch của hai giá trị

Bạn muốn tính tổng sự khác biệt giữa các hàng liên tiếp.
Ví dụ:giả sử bạn có các giá trị này cho cột kwh :

kwh
---
10
12
14
17
25
32

vì vậy sự khác biệt là:

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

Tổng của những khác biệt này bằng 32-10 đó là:

Vì vậy, những gì bạn cần là hàm cửa sổ FIRST_VALUE() để có được những giá trị này:

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()

và không cần truy vấn con hoặc tổng hợp.

Tôi đã lưu trong mã của mình PARTITION BY n.customer_id bởi vì bạn sử dụng nó trong mã của mình, mặc dù bạn có thể cần 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. ALTER TABLE lỗi

  2. Cần trợ giúp cài đặt MySQL cho Python

  3. Hạn chế kết nối MySQL từ máy chủ cục bộ để cải thiện bảo mật

  4. Lỗi nghiêm trọng:Gọi lại mảng phải chứa các chỉ số 0 và 1

  5. Tải chậm từ cơ sở dữ liệu khi người dùng cuộn trang xuống (tương tự như Twitter và Facebook)