sql >> データベース >  >> RDS >> Mysql

MySQLは2つの値の差の合計を表示します

    連続する行間の差を合計する必要があります。
    たとえば、列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が必要になる場合がありますが、コードで使用しているためです。 。



    1. MySQL-SELECT ... WHERE id IN(..)-正しい順序

    2. RowDataPacketオブジェクトにアクセスする方法

    3. スウェーデン語の文字をmysqlデータベースに保存する

    4. テーブルが存在する場合は行を削除しますSQL