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

Mysql group by IDを使用して、同じ列内の2つの行の値を減算します

    日付が正しくありません。この列で注文する場合は、最初に日単位で注文します。適切な注文は年月日です。適切なデータ型、日時、またはタイムスタンプを使用してください。これを行うには、次のようにします。

    alter table table1 add column d datetime;
    update table1 set d = str_to_date(`Date`, '%d-%m-%Y %H:%i');
    alter table table1 drop column `Date`;
    

    目的の結果を取得するためのクエリは次のとおりです。

    SELECT ID, d, Value,
           IF(@ID=ID, Value - @prevV, 'N/A') AS diff,
           @row_number:=CASE WHEN @ID=ID THEN @row_number+1 ELSE 1 END AS row_number,
    
           @prevV := Value,
           @ID:=ID AS ID
    FROM table1
    , (SELECT @row_number:=0, @ID:='', @prevV := NULL) AS t 
    ORDER BY id, d;
    

    前の行の値を保持するために別の変数を追加するだけです。

    • sqlfiddle でライブで動作することを確認してください
    • こちらが別のsqlfiddle です。 IDごとに3行ある場合に何が起こるかを紹介します



    1. Postgresinformation_schemaを使用してカスタムタイプを一覧表示する方法

    2. MySqlでvarcharの長さを増やすことで起こりうる結果は?

    3. MySqlエラー:このストアド関数/トリガーを呼び出したステートメントによって既に使用されているため、ストアド関数/トリガーのテーブルを更新できません

    4. 私のお気に入りのPostgreSQL拡張機能-パート1-