显示员工的销售额

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

我知道如何针对每个客户订单显示员工姓名,但在显示特定员工的订单数量时遇到了困难。

【问题讨论】:

提示:JOINGROUP 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

【讨论】:

以上是关于显示员工的销售额的主要内容,如果未能解决你的问题,请参考以下文章

SQL 选择销售额最低的员工的所有订单

ZZNUOJ_C语言1032:员工薪水(完整代码)

Excel如何进行多条件多维度计算?

员工成本降低33%,销售额提升23%,人脸识别成新零售行业利器

用于跟踪全年销售的 SQL 关系数据库

sql server 级联更新 急急急!