Обобщение данных с использованием sql - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть таблица записей журнала с соответствующими следующими столбцами: eventype, userid.Я могу просто суммировать данные, используя следующий запрос, чтобы получить итоговую сумму для каждого пользовательского типа события

SELECT     EventType, COUNT(EventUserID) AS Total, EventUserID
FROM         dbo.vSystemEventLog AS SE
GROUP BY EventType, EventUserID

Однако мне также нужно иметь промежуточную сумму для каждого отдельного типа события независимо от пользователя.Как мне это сделать?

Ура

1 Ответ

3 голосов
/ 03 февраля 2011

Я думаю, что это может быть то, что вы хотите:

SELECT      IsNull(EventType,'SUMMARY') as [EventType],
            IsNull(EventUserId, 'TOTAL') as [EventUserId], 
            COUNT(EventUserID) AS [Total]

FROM    dbo.vSystemEventLog
GROUP BY EventType, EventUserID With Cube

Я не совсем уверен, что вы хотите - пример вывода и / или данные были бы наиболее полезны.

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

Хорошо, поэтому я создал эти тестовые данные и SQL.Я думаю, что это то, что вы хотите.

Create Table #t
(
EventType int,
EventUserId int
)
Insert Into #t
Select 100, 18 union all Select 100, 18 union all Select 100, 18

Insert Into #t
Select 101, 16 union all Select 101, 16  union all Select 101, 16 
union all Select 101, 16 union all Select 101, 16  union all Select 101, 16 

Insert Into #t
Select 101, 18 union all Select 101, 18 union all Select 101, 18 union all Select 101, 18

Insert Into #t
Select 102, 18 union all Select 102, 18 


Select  IsNull(Convert(varchar(50), EventUserId), 'SUMMARY') As [EventUserId],
        IsNull(Convert(varchar(50), EventType), 'TOTAL') as [EventType],
        Count(EventUserId) as [Total]
From #t
Group By EventUserId, EventType with cube
Order by 1

drop table #t

Это приводит к следующему выводу:

Sample Data Query Results

...