Функция подсчета MySQL с объединением? - PullRequest
0 голосов
/ 14 января 2019

У меня есть две таблицы. Пользователь (номер, имя) Финансы (идентификатор, item_id, сумма, user_id)

Мой вариант использования

пользователи - сотрудники (продавцы) организации.

Когда они продают таблицу финансов предмета, обновляется новая запись серийного идентификатора проданного предмета.

Я хочу получить имена пользователей вместе с общей стоимостью продаж, которые они совершили.

Пользователь

id  |  name
1   |  Dinesh
2   |  Pathum
3   |  Naveed

Финансы

id  | item_id | amount | user_id
1   | 1       | 2000   | 1
2   | 2       | 2000   | 1
3   | 3       | 1000   | 3
4   | 4       | 500    | 3

Ожидаемый результат

Dinesh 4000
Pathum 0
Naveed 1500

Как мне добиться этого с помощью MySQL?

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Присоединяйтесь к ним, группируйте их, суммируйте их.

SELECT usr.name AS UserName, COALESCE(SUM(fin.amount),0) AS TotalAmount
FROM `User` usr
LEFT JOIN `Finance` fin ON fin.user_id = usr.id
GROUP BY usr.id, usr.name
ORDER BY usr.id;

Тест по дБ <> скрипка здесь

0 голосов
/ 15 января 2019

Другой способ:

SELECT Name,SUM(IFNULL(amount,0)) AS "Total" FROM (SELECT Name,amount FROM user LEFT JOIN finance ON user.id=finance.user_id) a GROUP BY Name;
0 голосов
/ 14 января 2019

Запрос выглядит следующим образом:

SELECT u.name as 'Agent Name', 
if(sum(f.amount) IS NULL, 0,sum(f.amount)) as Total,
f.createdAt
FROM users u LEFT JOIN finance f
ON u.id = f.user_id
GROUP BY u.id, u.name, f.createdAt
ORDER BY f.createdAt DESC

Вот рабочая SQL Fiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...