Mysql SQL-按销售人员统计订单总数
我是一名计算机科学专业的学生,正在做家庭作业。我试图计算每个销售人员的订单总数。我希望我的最终输出显示销售人员的姓名以及他/她获得积分的订单数量 信息存储在两个单独的表中 样本数据 表1-订单Mysql SQL-按销售人员统计订单总数,mysql,database,aggregate-functions,Mysql,Database,Aggregate Functions,我是一名计算机科学专业的学生,正在做家庭作业。我试图计算每个销售人员的订单总数。我希望我的最终输出显示销售人员的姓名以及他/她获得积分的订单数量 信息存储在两个单独的表中 样本数据 表1-订单 OrderID CustomerID OrderDate FulfillmentDate SalespersonID ShipAdrsID 1 4 2014-09-08 2014-11-25 3 NULL 2 3 2014-10-04 0000-00-00 3 N
OrderID CustomerID OrderDate FulfillmentDate SalespersonID ShipAdrsID
1 4 2014-09-08 2014-11-25 3 NULL
2 3 2014-10-04 0000-00-00 3 NULL
3 1 2014-07-19 0000-00-00 2 NULL
4 6 2014-11-01 0000-00-00 5 NULL
5 4 2014-07-28 0000-00-00 3 NULL
6 4 2014-08-27 0000-00-00 3 NULL
7 1 2014-09-16 0000-00-00 2 NULL
8 4 2014-09-16 0000-00-00 3 NULL
9 6 2014-09-16 0000-00-00 5 NULL
表2-销售人员
SalespersonID SalespersonName
1 "Doug Henny"
2 "Robert Lewis"
3 "William Strong"
4 "Julie Dawson"
这是我最新的问题。问题是它只返回ID为2的单个销售人员的数据。我不知道为什么会这样
SELECT SalespersonName, COUNT(DISTINCT order_t.SalespersonID) AS TotalOrderQuantity
FROM salesperson_t, order_t
WHERE salesperson_t.SalespersonID = order_t.SalespersonID;
您需要使用
group by
子句
SELECT SalespersonName, COUNT(order_t.SalespersonID) AS TotalOrderQuantity
FROM salesperson_t join order_t on (ordert_t.SalespersonID = salesperson_t.SalespersonID )
group by order_t.SalespersonID
我建议对GROUPBY使用内部联接和计数(*)
SELECT SalespersonName, COUNT(*) AS NumberOfOrder
FROM salesperson_t
INNER JOIN order_t on (ordert_t.SalespersonID = salesperson_t.SalespersonID )
GROUP BY order_t.SalespersonID
ORDER BY order_t.SalespersonID
您缺少一个group by,您使用的是老式的join-ish语法,任何人都不应该再使用了。您需要去掉count(distinct)。您需要订单表中销售人员ID的计数。这就给了你订单的数量。因此,如果订单表中有五个'3',您希望将它们全部汇总到您的组中。Count distinct是不必要的,可能会弄坏它。此外,我很惊讶您的查询能够正常工作,因为您没有按SalesorsonName分组(即,在Where子句后添加了“group by SALERSONNAME”。@Brent当答案解决了您的问题时,您可以通过单击“接受”图标来显示它,并为回答者和您自己赢得声誉。PS而“谢谢”不鼓励评论。@Brent,另外,请查看“帮助”->“浏览”了解网站礼仪。将问题标记为“已解决”有助于其他人了解问题的解决方法,也有助于其他人了解问题的解决方法,这样当问题已解决时,其他人就不需要尝试提供更多答案。