1

助けてください、私はこのようなテーブルを持っています:

 | ID | userId   | amount  | type    |
 -------------------------------------
 |  1 |       10 |  10     | expense |
 |  2 |       10 |  22     | income  |
 |  3 |        3 |  25     | expense |
 |  4 |        3 |  40     | expense |
 |  5 |        3 |  63     | income  |

1つのクエリを使用して、各ユーザーのバランスを取得する方法を探しています。

難しいのは、その金額を経費に加算し、収入を差し引く必要がある場合です。

これは結果テーブルになります。

 | userId | balance |
 --------------------
 |   10   |  12     |
 |    3   |  -2     |
4

3 に答える 3

4

サブクエリのそれぞれの合計を取得incomeしてexpense使用し、後でそれらを結合して、次のことができるようにする必要があります。subtract expense from income

SELECT  a.UserID,
        (b.totalIncome - a.totalExpense) `balance`
FROM
(
    SELECT  userID, SUM(amount) totalExpense
    FROM    myTable
    WHERE   type = 'expense'
    GROUP BY userID
) a INNER JOIN
(
    SELECT  userID, SUM(amount) totalIncome
    FROM    myTable
    WHERE   type = 'income'
    GROUP BY userID
) b on a.userID = b.userid

SQLFiddleデモ

于 2012-08-08T23:50:04.903 に答える
1

これは、次の方法で1つのグループで行うのが最も簡単です。

select user_id,
       sum(case when type = 'income' then amount else - amount end) as balance
from t
group by user_id
于 2012-08-09T01:31:18.630 に答える
0

それぞれIDでグループ化された2つのサブクエリを持つことができます。1つは収入を合計し、もう1つは費用を合計します。次に、これらを結合して、各行にID、費用の合計、および収入の合計が含まれるようにします。これにより、残高を簡単に計算できます。

于 2012-08-08T23:47:43.687 に答える