【问题标题】:Performing LEFT JOIN on an AGGREGATE SUM from a different table对来自不同表的 AGGREGATE SUM 执行 LEFT JOIN
【发布时间】:2016-08-03 18:24:23
【问题描述】:

我有两个表(缺陷、排序数据),我想对它们执行聚合总和和左连接的组合,以显示所有缺陷名称,从 sort_data 中的最高数量聚合总和排序,还包括未存在于 sort_data 表中。见下文。

defects
defect_name
-----------
Snapped     
Cracked     
Melted      
Warped      
Other       

sort_data
defect_name |qty
----------------
Snapped     |5
Cracked     |1
Snapped     |15
Snapped     |10
Melted      |2

Desired results: 
Snapped
Melted
Cracked
Other
Warped

我可以使用汇总和从 sort_data 创建列表的一部分:

SELECT sort_data.defect_name, sum(qty) 
FROM sort_data 
GROUP BY sort_data.defect_name 
ORDER BY sum(qty)

我相信我还需要一个左连接,例如:

SELECT * 
from defects 
LEFT OUTER JOIN sort_data on sort_data.defect_name = defects.defect_name

我不确定如何将两者结合起来。帮助将不胜感激。谢谢。

【问题讨论】:

    标签: mysql left-join aggregate


    【解决方案1】:

    使用左连接

    SELECT defect.defect_name, sum(sort_data.qty) 
    FROM defect 
    LEFT JOIN sort_data on sort_data.defect_name = defects.defect_name
    GROUP BY sort_data.defect_name 
    ORDER BY sum(sort_data.qty);
    

    【讨论】:

    • 谢谢,这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2019-06-13
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2015-02-22
    相关资源
    最近更新 更多