Запрос T-SQL - выпуск GROUP BY - PullRequest
       27

Запрос T-SQL - выпуск GROUP BY

1 голос
/ 11 августа 2009

У меня есть таблица в SQL Server, состоящая из двух столбцов, которые отслеживают, сколько пользователей вошли в систему за определенный интервал. Первый столбец - Time15, который является временем, округленным до ближайшего 15-минутного интервала (datetime). Второй столбец - UserCount - количество пользователей, вошедших в систему в течение этого 15-минутного интервала.

Мне нужен запрос, который покажет мне максимальное количество пользователей, вошедших в систему за каждый день. Так что если в 13:00 01.01.09 система достигла пика в 100 пользователей, мне нужен вывод, который выглядит следующим образом:

1/1/09 - 100

1/2/09 - 94

1/3/09 - 98

и т.д ...

Любая идея, что T-SQL собирается сделать это? Спасибо!

Ответы [ 3 ]

5 голосов
/ 11 августа 2009

Попробуйте это:

SELECT YEAR(Time15), MONTH(Time15), DAY(Time15), MAX(UserCount)
FROM Table
GROUP BY YEAR(Time15), MONTH(Time15), DAY(Time15)

Мне нравится подход Расса к избавлению от части времени - если у вас есть SQL Server 2005+, вы можете использовать этот подход для сохранения времени суток, когда произошел пик:

WITH cte AS 
(
SELECT Time15, UserCount, ROW_NUMBER() OVER (PARTITION BY DATEADD(dd, DATEDIFF(d, 0, Time15), 0) ORDER BY UserCount DESC) AS RowNumber
FROM <Table>
)
SELECT Time15, UserCount
FROM cte
WHERE RowNumber = 1
2 голосов
/ 12 августа 2009

В основном вам нужно удалить часть времени из поля Time15, чтобы получить дату. Тогда это просто простой случай получения максимального количества пользователей при группировании по дате.

SELECT
    DATEADD(dd, DATEDIFF(d, 0, Time15), 0) As [Date],
    MAX(UserCount) As [Maximum Users]
FROM
    Table
GROUP BY
     DATEADD(dd, DATEDIFF(d, 0, Time15), 0)
1 голос
/ 12 августа 2009

Я бы просто преобразовал это таким образом ... кажется, самый простой ..

ВЫБРАТЬ конвертирование (varchar, Time15,101) как da, max (UserCount) ИЗ СТОЛБА ГРУППЫ BY конвертировать (varchar, Time15,101)

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