显示员工的销售额
Posted
技术标签:
【中文标题】显示员工的销售额【英文标题】:Display Count of sales for employees 【发布时间】:2020-04-10 10:10:21 【问题描述】:我有三张桌子。 PersonalDetail,员工和订单。个人详细信息包含有关姓名和资料的数据。员工表有专业数据。订单有销售历史。
表 PersonalDetail
personalID FirstName LastName
1 test test
2 test test
3 test test
4 test test
5 test test
表员工:
EmployeeID personalID hireDate Status
001 1 test test
002 2 test test
003 3 test test
004 4 test test
005 5 test test
and more data
餐桌顺序:
OrderID customerID EmployeeID ShipmentStatus
1 10 002 P
2 182 001 P
3 22 005 P
4 10 002 P
5 89 003 P
6 76 004 P
7 99 001 P
8 111 001 P
9 123 002 P
10 647 001 P
我想得到最终结果:
employeeID FirstName,LastName Count(sales to customers)
001 test test 4
002 test test 3
003 test test 1
004 test test 1
005 test test 1
到目前为止,我有这个:
SELECT e.employeeID, Concat (p.firstName,' ', p.lastName) AS Name, o.customerID
FROM Employee ((
INNER JOIN PersonalDetail ON e.personalID = p.personalID)
INNER JOIN Orders ON e.employeeID = o.employeeID)
ORDER BY employeeID;
这给了我以下结果:
employeeID Name CustomerID
001 test test 182
001 test test 99
001 test test 111
001 test test 647
002 test test 10
002 test test 10
002 test test 123
003 test test 89
004 test test 76
005 test test 22
我知道如何针对每个客户订单显示员工姓名,但在显示特定员工的订单数量时遇到了困难。
【问题讨论】:
提示:JOIN
。 GROUP BY
.
请只选择一个rdms
【参考方案1】:
您可以加入和聚合:
select
e.EmployeeID,
concat(e.FirstName, ',', e.LastName) employeeName,
count(*) no_sales
from employees e
inner join sales s on s.EmployeeID = e.EmployeeID
group by e.EmployeeID, e.FirstName, e.LastName
order by no_sales desc
【讨论】:
【参考方案2】:为避免“order by”出现错误,请使用计数本身:
select
E.EmployeeID,
concat(E.FirstName, ',', E.LastName) employeeName,
count(S.*) no_sales
from employees E
inner join sales S on S.EmployeeID = E.EmployeeID
group by E.EmployeeID, E.FirstName, E.LastName
order by count(S.*) desc
【讨论】:
以上是关于显示员工的销售额的主要内容,如果未能解决你的问题,请参考以下文章