Прошу прощения, если это будет повторный пост, но, просматривая все предыдущие вопросы, которые я мог найти с подобной формулировкой, мне не удалось найти рабочий ответ.Как я могу получить MAX COUNT для нескольких пользователей?
У меня есть таблица trainingHistory
, в которой есть запись для каждого нового обучения. Обучение может быть выполнено несколькими trainers
. Clients
может иметь несколько trainers
.
То, что я пытаюсь сделать это COUNT
количество clients
, который был последнего подготовки каждого trainer
.
Пример:
clientID | trainDate | trainerID
101 | 2012-03-13 10:58:11| 10
101 | 2012-03-12 10:58:11| 11
102 | 2012-03-15 10:58:11| 10
102 | 2012-03-09 10:58:11| 12
103 | 2012-03-08 10:58:11| 7
Таким образом, конечный результат я ищу будет:
Results
trainerID | count
10 | 2
7 | 1
Я пробовал довольно много различных запросов и просмотрел довольно много ответов, в том числе это один здесь Using sub-queries in SQL to find max(count()), но до сих пор не смог получить желаемый результат.
Что я получаю, как это:
Results
trainerID | count
10 | 5
7 | 5
Как я могу получить точную count
за trainer
, в отличии от общей суммы?
Ближайший я получил это:
SELECT t.trainerName,
t.trainerID,
(
SELECT COUNT(lastTrainerCount)
FROM (
SELECT MAX(th.clientID) AS lastTrainerCount
FROM trainingHistory th
GROUP BY th.clientID
) AS lastTrainerCount
)
FROM trainers t
INNER JOIN trainingHistory th ON (th.trainerID = t.trainerID)
WHERE th.trainingDate BETWEEN '12/14/14' AND '02/07/15'
GROUP BY t.trainerName, t.trainerID
Какие результаты в:
Results
trainerID | count
10 | 1072
7 | 1072
Использование SQL Server 2012
Цените любую помощь вы можете предоставить.
Спасибо за ответ, я получаю следующее сообщение об ошибке: Неправильный синтаксис около «A» –
Это, кажется, сделал это, понадобится, чтобы сделать некоторые исследования по этому, чтобы найти что здесь происходит, но, безусловно, оцените быстрый ответ! Благодаря! –