как суммировать и вычитать значение столбца в соответствии с user_id в mysql [duplicate]

0

У меня есть таблица, называемая оплатой. Я просто хочу рассчитать общий платеж каждого пользователя. Он имеет payer_user_id, payee_user_id, amount ,....

--------------------------------------------------
| ID | payer_user_id | payee_user_id | amount | ..
--------------------------------------------------
| 1  | 100           | 1             | 1000   |
--------------------------------------------------
| 2  | 200           | 1             | 20000  |
------------------------------------------------
| 3  | 1             | 100           | 50 

например, user_id = 100, имеет total_payment = 950, потому что он заплатил мне в размере 1000 а затем я заплатил ему в размере 50. Таким образом, общая сумма платежа составляет 950. Как запустить запрос для получения результата?

(SELECT sum(amount) FROM payment  GROUP BY BYPAYER_USER_ID) -
(SELECT sum(amount) FROM payment  GROUP BY PAYEE_USER_ID) total_debpt

 ORDER BY total_debpt
LIMIT 10
Теги:

1 ответ

1
Лучший ответ
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,payer_user_id INT NOT NULL
,payee_user_id INT NOT NULL
,amount INT NOT NULL
);

INSERT INTO my_table VALUES
(1  ,100           ,1             ,1000   ),
(2  ,200           ,1             ,20000  ),
(3  ,1             ,100           ,50 );


SELECT user_id
     , SUM(amount) total
  FROM
     (
     SELECT payer_user_id user_id, amount FROM my_table
     UNION ALL
     SELECT payee_user_id, amount*-1 FROM my_table
     ) x
 GROUP 
    BY user_id;
+---------+--------+
| user_id | total  |
+---------+--------+
|       1 | -20950 |
|     100 |    950 |
|     200 |  20000 |
+---------+--------+
  • 0
    Большое спасибо за ваш удивительный запрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню