आप लगातार पंक्तियों के बीच के अंतरों को जोड़ना चाहते हैं।
उदाहरण के लिए, मान लें कि आपके पास kwh
कॉलम के लिए ये मान हैं। :
kwh
---
10
12
14
17
25
32
तो अंतर हैं:
kwh_diff
--------
0
12-10
14-12
17-14
25-17
32-25
इन अंतरों का योग 32-10
. के बराबर है जो है:
तो आपको विंडो फ़ंक्शन की आवश्यकता है FIRST_VALUE()
इन मूल्यों को प्राप्त करने के लिए:
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()
और किसी सबक्वेरी या एकत्रीकरण की आवश्यकता नहीं है।
मैंने अपने कोड PARTITION BY n.customer_id
. में रखा है क्योंकि आप इसे अपने कोड में उपयोग करते हैं, हालांकि आपको PARTITION BY n.customer_id, m.msn
की आवश्यकता हो सकती है ।