2012-04-16 3 views
1

У меня есть активность приложения регистрации в таблице. Каждая строка содержит DateTime («Время») и столбец «EventType» ... (И, очевидно, некоторые другие, которые здесь неважны)Выбор нескольких счетчиков, сгруппированных по времени из той же таблицы

Я хотел был бы иметь возможность получить счет количества различных EventTypes которые происходят каждый час.

настоящее время я получаю основной счет одного EventType с:

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as 'hour', count(*) as 'apploads' 
from PlaySessionEvent 
where EventType = 0 
Group By DATEADD(hh,(DATEDIFF(hh,0,Time)),0) 
order by hour 

Что это самый простой способ расширить это рассчитывать несколько различных EventTypes в тот же час?

:: Update

Если уточнили, я havn't только сгруппированы по EventType Aswell, потому что я хочу только подмножество всех доступных EventTypes. (т. е. не скучные данные трассировки/отладки) Кроме того, мне нужны разные типы событий в виде столбцов, а не дополнительные строки, дублирующие записи DateTime.

Например ...

DateTime   EventType1  EventType2 
12:12:12 12/12/12 45    22 

Извиняюсь за неточного первоначальный вопрос!

+0

Добавить типСобытия выбрать список и группу by- –

ответ

4

Edit:

Новое решение для измененного вопроса:

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as 'hour', count(*) as 'apploads', 
sum(case when EventType = 1 then 1 else 0 end) EventType1, 
sum(case when EventType = 2 then 1 else 0 end) EventType2 
from PlaySessionEvent 
where EventType = 0 
group By DATEDIFF(hh,0,Time) 
order by hour 

Вот немного другой способ написания его:

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as [hour], 
     COUNT(*) [apploads], 
     COUNT(case when EventType = 1 then 1 end) EventType1, 
     COUNT(case when EventType = 2 then 1 end) EventType2 
from PlaySessionEvent 
where EventType = 0 
group By DATEDIFF(hh,0,Time) 
order by hour 
+0

Отлично, спасибо! –

Смежные вопросы