Пользовательский отчет о пользовательских данных - SQL Server - PullRequest
2 голосов
/ 12 декабря 2011

Учитывая следующую очень простую таблицу:

Create Table tblUserLogins (
    LoginNumber int PRIMARY KEY IDENTITY(1,1),
    Username varchar(100),
    LoginTime datetime
)

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

Мне нужна помощь в написании запроса, который на самом деле вернет мне имя пользователя, который вошел в систему.самое большее в течение данного периода (предоставляется в качестве входных значений для процедуры).

Я могу выбирать данные между любыми двумя данными датами, используя следующее:

SELECT * FROM tblUserLogins 
WHERE LoginTime BETWEEN @DateFrom AND @DateTo

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

Любая помощь будет с благодарностью получена.

Ответы [ 2 ]

1 голос
/ 12 декабря 2011
SELECT TOP 1 
 Username,
 COUNT(Username) as Total
FROM 
 tblUserLogins
WHERE 
 LoginTime BETWEEN @DateFrom AND @DateTo
GROUP BY
 Username
ORDER BY
 Total DESC
0 голосов
/ 12 декабря 2011

Вот полный пример:

Create Table #tblUserLogins (
    LoginNumber int PRIMARY KEY IDENTITY(1,1),
    Username varchar(100),
    LoginTime datetime
)

declare @DateFrom datetime, @DateTo datetime

select @DateFrom = getdate()

insert into #tblUserLogins values ('test1', getdate())
insert into #tblUserLogins values ('test2', getdate())
insert into #tblUserLogins values ('test1', getdate())


select @DateTo = getdate()

SELECT TOP 1 Username, count(LoginTime) 'Total' FROM #tblUserLogins
WHERE LoginTime BETWEEN @DateFrom AND @DateTo
GROUP BY UserName
ORDER BY Total, Username desc

drop table #tblUserLogins

Если существует более одного имени пользователя с одинаковым количеством записей, он покажет только одно (с именем, наиболее близким к z).

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