Дисплей Количество продаж для сотрудников - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть три таблицы. 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

Я знаю, как отобразить имя сотрудника на каждом заказ клиента, но не удается отобразить количество заказов для конкретного сотрудника.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Вы можете объединяться и объединяться:

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
0 голосов
/ 10 апреля 2020

Чтобы избежать ошибки в '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
...