代码之家  ›  专栏  ›  技术社区  ›  margherita pizza

带有join的mysql count函数?

  •  0
  • margherita pizza  · 技术社区  · 6 年前

    我有两张桌子。 用户(ID,姓名) 财务(ID、项目ID、金额、用户ID)

    我的用例是

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

    当他们销售项目财务表时,会更新该已销售项目的序列号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 回复  |  直到 6 年前
        1
  •  2
  •   alim1990    6 年前

    查询如下:

    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
  •  1
  •   LukStorms    6 年前

    加入em,分组em,求和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;
    

    测试 小提琴 here

        3
  •  0
  •   FanoFN    6 年前

    另一种方式:

    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;