У меня есть таблица со столбцами MachineID, UserID и Date. Каждый день я вставляю / добавляю в эту таблицу запись о том, какой пользователь входит на какой компьютер, поэтому я получаю ежедневный исторический журнал пользователей, вошедших в систему. Мне нужно иметь возможность извлекать из этого наиболее активного пользователя для машины (UserID с наибольшим количеством строк против MachineID), или в случае, если два пользователя привязаны к «первому месту», самый последний из этих двух пользователей .
Я использую SQL 2012 Express. По сути, я дошел до того, что у меня есть MachineID и UserID и количество дат / строк для каждой их комбинации, но я не могу понять, как это сделать дальше.
Использование примера набора данных:
[MachineID] [UserID] [Date]
1 1 20190619
1 1 20190620
1 2 20190621
2 3 20190618
2 3 20190619
2 4 20190620
2 4 20190621
Я запустил SQL:
SELECT DISTINCT MachineID
, UserID
, COUNT(DTAdded) as [Logon Count]
FROM MUHistory
GROUP BY MachineID, UserID
и результат:
[MachineID] [UserID] [Logon Count]
1 1 2
1 2 1
2 3 2
2 4 2
Однако мой желаемый результат:
[MachineID] [UserID]
1 1
2 4
В тех случаях, когда в MachineID '1' Пользователь '1' вошел в систему больше, чем любой другой пользователь, а в MachineID '2' UserID '3' и '4' вошли в систему одинаковое количество раз, но из них UserID '4' имеет самый последний вход в систему.
Заранее спасибо, у меня был поиск вокруг, но я могу найти сообщения только о том или ином результате (наиболее активный или самый последний), но не о двух вместе взятых.