Résumer les données à l'aide de SQL
-
28-10-2019 - |
Question
J'ai une table d'entrée de journalisation avec les colonnes suivantes: eventype
, userid
.Je peux simplement résumer les données en utilisant la requête suivante pour obtenir un total pour chaque type d'événement utilisateur
SELECT EventType, COUNT(EventUserID) AS Total, EventUserID
FROM dbo.vSystemEventLog AS SE
GROUP BY EventType, EventUserID
Cependant, j'ai également besoin d'un total courant pour chaque type d'événement individuel, quel que soit l'utilisateur.Comment procéder?
Acclamations
La solution
Je pense que c'est peut-être ce que vous voulez:
SELECT IsNull(EventType,'SUMMARY') as [EventType],
IsNull(EventUserId, 'TOTAL') as [EventUserId],
COUNT(EventUserID) AS [Total]
FROM dbo.vSystemEventLog
GROUP BY EventType, EventUserID With Cube
Je ne suis pas tout à fait sûr de ce que vous voulez - un exemple de sortie et / ou de données serait très utile.
Cependant, je suppose que vous devez le regrouper dans l'autre sens pour que la requête soit groupée par
EventUserId
en premier.
Ok - j'ai donc créé ces données de test et SQL.Je pense que c'est ce que vous voulez.
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
Cela produit la sortie suivante: