【问题标题】:Total products ordered by each customer每个客户订购的产品总数
【发布时间】:2019-11-18 01:28:49
【问题描述】:

我有以下表格:

客户(custID

订单(orderID、custID)

PO(prodID、orderID、金额)

我想选择每个 custID 和订购的产品总量。我有以下代码:

SELECT c.custId (COUNT(po.amount)) totalOrders
FROM Customer c
INNER JOIN "Order" o
ON c.custId = o.custId
INNER JOIN PO po
ON o.orderId=po.orderId;

我收到以下错误:

找不到列“c”或用户定义的函数或 聚合“c.custId”,或者名称不明确。

【问题讨论】:

  • 首先弄清楚你使用的是哪个RDBMS

标签: mysql sql sql-server database relational-database


【解决方案1】:

您需要group by。您不需要客户表。你想要SUM(),而不是 COUNT()`。而且你的语法刚刚结束:

SELECT o.custId, SUM(po.amount) as totalOrders
FROM "Order" o INNER JOIN
      PO po
      ON o.orderId=po.orderId
GROUP BY o.custId;

【讨论】:

  • 问题是产品总量,所以 COUNT() 可能是正确的,除非金额是订单上的产品数量。
  • @TomC 。 . .如果有一个名为amount的列,那么“总金额”应参考sum(amount)
  • 是的 - 只是不确定这是否是一个措辞不当的问题。无论如何,OP 现在有两种选择,相信他们会解决的!
猜你喜欢
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 2015-12-25
  • 2022-01-11
  • 1970-01-01
  • 2021-10-09
相关资源
最近更新 更多