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

mysqlでバランスを計算する

    簡単な答え、はい

    より長い答えは、変数を使用して、行を反復するときにそれを集計することができます。つまり、

    SELECT 
        `table`.`ID`,
        `table`.`In`,
        `table`.`Out`,
        @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
    FROM `table`, (SELECT @Balance := 0) AS variableInit
    ORDER BY `table`.`ID` ASC
    

    , (SELECT @Balance := 0) AS variableInit 開始する前に、@Balanceが0に初期化されていることを確認してください。次に、各行について、@Balanceを@Balance + In - Outに設定します。 、計算値を出力します。

    また、順序が一貫していることを確認する価値があります。そうしないと、行が返される順序に応じてバランスが変化します。たとえば、前に並べて並べ替える場合は、これをサブクエリとして使用できます。これにより、外部クエリが計算値を処理し、バランスが正しいままになるようにします。

    SELECT
        `balanceCalculation`.`ID`,
        `balanceCalculation`.`In`,
        `balanceCalculation`.`Out`,
        `balanceCalculation`.`Balance`
    FROM (
        SELECT 
            `table`.`ID`,
            `table`.`In`,
            `table`.`Out`,
            @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
        FROM `table`, (SELECT @Balance := 0) AS variableInit
        ORDER BY `table`.`ID` ASC
    ) AS `balanceCalculation`
    ORDER BY `balanceCalculation`.`ID` DESC
    


    1. Tomcatjdbc接続プールに接続がありません

    2. Oracleのテーブルのすべての制約を確認する方法

    3. PostgreSQLの日付から月を抽出する

    4. 無効な変換がエラーコード:17132を要求したのはなぜですか?