Reputation: 478
I have a query from which I am getting data.
SELECT n.`name`,n.`customer_id`,m.`msn`, m.kwh FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 3 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
Output
Now I want to do is to subtract the kwh
value like kwh[2] - kwh[1]
, kwh[3] - kwh[2]
, kwh[4] - kwh[3]
..... kwh[n+1] - kwh[n]
Any help would be highly appreciated.
Upvotes: 0
Views: 41
Reputation: 449
LAG()
window function can be used for this problem as shown below,
SELECT n.`name`,n.`customer_id`,m.`msn`, m.kwh,
m.kwh - LAG(m.kwh) OVER(PARTITION BY n.`customer_id` ORDER BY m.`data_date_time`)
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 3 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
Upvotes: 1