MySQL的计数功能与联接?

时间:2019-01-14 12:34:59

标签: mysql sql

我有两个桌子。 用户(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实现此目标?

3 个答案:

答案 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;