首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有联接的MySQL计数函数?

带有联接的MySQL计数函数?
EN

Stack Overflow用户
提问于 2019-01-14 12:34:59
回答 3查看 69关注 0票数 0

我有两张桌子。用户(id,name)财务(id,item_id,user_id)

我的用例是

用户是组织的员工(销售人员)。

当他们出售一个项目财务表被更新的新记录,出售项目的串行id。

我想得到用户名和他们销售的总价值。

用户

代码语言:javascript
复制
id  |  name
1   |  Dinesh
2   |  Pathum
3   |  Naveed

金融

代码语言:javascript
复制
id  | item_id | amount | user_id
1   | 1       | 2000   | 1
2   | 2       | 2000   | 1
3   | 3       | 1000   | 3
4   | 4       | 500    | 3

预期产出

代码语言:javascript
复制
Dinesh 4000
Pathum 0
Naveed 1500

如何使用MySQL实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-14 12:41:04

查询如下:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2019-01-14 12:41:16

加入他们,组成他们,总结他们。

代码语言:javascript
复制
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<>fiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=1126abc85196d860230af37b2beaef9e的测试

票数 1
EN

Stack Overflow用户

发布于 2019-01-15 02:25:27

另一种方式是:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54181674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档