MySQL - 选择所有客户和每个客户的总订单和总价值

Bad*_*sie 5 mysql sql select join

对于每个客户,我想返回:id,name,total_orders,total_value

顾客:

????????????????????
? ID ?    NAME     ?
????????????????????
?  1 ? John Smith  ?
?  2 ? Jim Jimmers ?
????????????????????
Run Code Online (Sandbox Code Playgroud)

命令:

????????????????????????????
?  ID   ? CUSTOMER ? VALUE ?
????????????????????????????
? 34656 ?        1 ?    20 ?
? 37345 ?        2 ?    25 ?
? 38220 ?        1 ?    15 ?
? 39496 ?        1 ?    38 ?
? 41752 ?        1 ?     9 ?
? 43734 ?        2 ?    20 ?
????????????????????????????
Run Code Online (Sandbox Code Playgroud)

如何选择以下结果:

????????????????????????????????????????????????
? ID ?    NAME     ? TOTALORDERS ? TOTAL_VALUE ?
????????????????????????????????????????????????
?  1 ? John Smith  ?           4 ?          82 ?
?  2 ? Jim Jimmers ?           2 ?          45 ?
????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 7

SELECT  a.ID,
        a.Name,
        COUNT(b.Customer) totalOrders,
        SUM(b.value) total_value
FROM    Customers a
        LEFT JOIN Orders b
            ON a.ID = b.Customer
GROUP   BY a.ID,
        a.Name
Run Code Online (Sandbox Code Playgroud)

要么

SELECT  a.ID,
        a.Name,
        COUNT(b.Customer) totalOrders,
        COALESCE(SUM(b.value), 0) total_value
FROM    Customers a
        LEFT JOIN Orders b
            ON a.ID = b.Customer
GROUP   BY a.ID,
        a.Name
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接:

结果,

????????????????????????????????????????????????
? ID ?    NAME     ? TOTALORDERS ? TOTAL_VALUE ?
????????????????????????????????????????????????
?  1 ? John Smith  ?           4 ?          82 ?
?  2 ? Jim Jimmers ?           2 ?          45 ?
????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)