Почему начальное значение COUNT изменяется после присоединения к таблице? - PullRequest
0 голосов
/ 20 апреля 2020

База данных SQLite здесь

У меня вопрос: сколько клиентов поддерживал каждый сотрудник, каков средний доход от каждой продажи и какова их общая продажа?

Чтобы узнать, сколько клиентов было поддержано каждым сотрудником, мой код был таким:

SELECT employees.EmployeeId, customers.SupportRepId, COUNT(customers.CustomerId) "Customers supported"
FROM customers
JOIN employees ON employees.EmployeeId = customers.SupportRepId
GROUP BY customers.SupportRepId;

И результат, который я получил, был следующим:

+------------+--------------+----------------------+
| EmployeeID | SupportRepID | Customers Supported  |
+------------+--------------+----------------------+
|          3 |            3 |                   21 |
|          4 |            4 |                   20 |
|          5 |            5 |                   18 |
+------------+--------------+----------------------+

Для Получая общий и средний доход, я обновил свой код следующим образом:

SELECT employees.EmployeeId, customers.SupportRepId, COUNT(customers.CustomerId) 'Customers Supported', SUM(invoices.Total) 'Total Revenue', SUM(invoices.Total)/COUNT(customers.CustomerId) 'Average Revenue'
FROM customers
JOIN employees ON employees.EmployeeId = customers.SupportRepId
JOIN invoices ON invoices.CustomerId = customers.CustomerId
GROUP BY customers.SupportRepId;

И я получил следующий результат:

+------------+--------------+---------------------+------------------+------------------+
| EmployeeID | SupportRepID | Customers Supported |  Total Revenue   | Average Revenue  |
+------------+--------------+---------------------+------------------+------------------+
|          3 |            3 |                 146 | 833.040000000001 | 5.70575342465754 |
|          4 |            4 |                 140 | 775.400000000001 | 5.53857142857144 |
|          5 |            5 |                 126 | 720.160000000001 | 5.71555555555556 |
+------------+--------------+---------------------+------------------+------------------+

После обновления моего кода столбец Поддерживаемые клиенты изменился и я считаю, что предыдущие данные верны. Таким образом, мой средний доход не соответствует новому значению. Почему данные о поддерживаемых клиентах меняются? Как я могу это исправить?

1 Ответ

1 голос
/ 21 апреля 2020

Я добавил функцию DISTINCT в функцию COUNT, и она сработала.

SELECT employees.EmployeeId, customers.SupportRepId, COUNT(DISTINCT customers.CustomerId) 'Customers Supported', SUM(invoices.Total) 'Total Revenue', SUM(invoices.Total)/COUNT(DISTINCT customers.CustomerId) 'Average Revenue'
FROM customers
JOIN employees ON employees.EmployeeId = customers.SupportRepId
JOIN invoices ON invoices.CustomerId = customers.CustomerId
GROUP BY customers.SupportRepId;

Без функции DISTINCT он считал повторяющиеся идентификаторы клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...