我有两个桌子。 用户(ID,名称) 财务(id,item_id,amount,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实现此目标?
答案 0 :(得分:2)
查询如下:
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。
答案 1 :(得分:1)
加入em,group em,sum em。
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;
在 db <>小提琴here
上进行测试答案 2 :(得分:0)
另一种方式:
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;