【问题标题】:Group by using Left Join in SQL?通过在 SQL 中使用左连接进行分组?
【发布时间】:2021-11-25 04:46:34
【问题描述】:

我有两个表,我试图在 Lockedlist.NR 上针对 PoReportTable.Tracking_Field 进行左连接,以便进行“分组”PoReportTable.COST 但是,我被卡住了,不知道哪里出错了. 在 Excel 中我会做一个“sumif”公式,但是使用 Pandas 和 SQL 我被卡住了......

有人可以帮忙吗?

conn = sqlite3.connect("data_superstore.db")
query3=''' 
SELECT Lockedlist.NR,
Lockedlist.Programme,
PoReportTable.COST,
PoReportTable.Short_Text
FROM Lockedlist
LEFT JOIN PoReportTable
ON Lockedlist.NR= PoReportTable.Tracking_Field
GROUP BY PoReportTable.COST
ORDER BY PoReportTable.COST DESC;
'''

样本输出

NR  Programme   COST
73645   Road  231.34
42536   Space 345.24
42536   Space 145.11
10021   Tech 947.38
10021   Tech    681.18
10021   Tech 1751.71

预期结果

NR  Programme   COST
42536 Space 490.35
10021 Tech 3380.27
73645 Road 231.45

【问题讨论】:

  • 请附上您的错误信息
  • 您好@Bialomazur,我没有错误消息。我正在寻找逻辑以便能够总结 PoReportTable.COST 列
  • 请添加几行样本数据和预期的结果。
  • @TheImpaler 我现在添加一个例子

标签: python sql pandas sqlite


【解决方案1】:

要产生您想要的结果,您可能需要按NR 分组,而不是COST,然后按total_cost 降序排序。如果是这种情况,您可以这样做:

SELECT
  Lockedlist.NR,
  max(Lockedlist.Programme) as Programme,
  sum(PoReportTable.COST) as total_cost
FROM Lockedlist
LEFT JOIN PoReportTable ON Lockedlist.NR= PoReportTable.Tracking_Field
GROUP BY Lockedlist.NR
ORDER BY sum(PoReportTable.COST) DESC;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2015-07-17
    • 2011-03-14
    • 2013-01-29
    • 2017-01-19
    • 1970-01-01
    • 2018-03-09
    • 2017-03-18
    相关资源
    最近更新 更多