MySQL show sum of difference of two values

后端 未结 3 1792
星月不相逢
星月不相逢 2021-01-25 02:43

Below is my query.

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`) AS kwh_dif         


        
3条回答
  •  鱼传尺愫
    2021-01-25 03:28

    You can’t use window functions within an aggregate function (while the opposite is possible), Here, you need to use a subquery, and aggregate in the outer query:

    SELECT name, customer_id, SUM(kwh_diff) sum_kwh_diff
    FROM (
        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`) 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()
    ) t
    GROUP BY name, customer_id
    

提交回复
热议问题