Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-按销售人员统计订单总数_Mysql_Database_Aggregate Functions - Fatal编程技术网

Mysql SQL-按销售人员统计订单总数

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

我是一名计算机科学专业的学生,正在做家庭作业。我试图计算每个销售人员的订单总数。我希望我的最终输出显示销售人员的姓名以及他/她获得积分的订单数量

信息存储在两个单独的表中

样本数据

表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   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,另外,请查看“帮助”->“浏览”了解网站礼仪。将问题标记为“已解决”有助于其他人了解问题的解决方法,也有助于其他人了解问题的解决方法,这样当问题已解决时,其他人就不需要尝试提供更多答案。