我有一個小問題。 數據:計數分組colums並通過其他列將它們分組
2016-11-09 0536B088-D3DE-4C0E-903F-C2463D0AAB7E 2016-11-09 866D70EC-93FD-4C30-BC54-C7B954F255BE 2016-11-09 6C090D6B-9842-4CB0-9E10-F9B941C8D3A1 2016-11-09 FB1DD63E-F098-4191-B8F4-BEA4F9776B54 2016-11-09 FB1DD63E-F098-4191-B8F4-BEA4F9776B54 2016-11-10 0536B088-D3DE-4C0E-903F-C2463D0AAB7E 2016-11-10 NULL 2016-11-10 0536B088-D3DE-4C0E-903F-C2463D0AAB7E 2016-11-11 0536B088-D3DE-4C0E-903F-C2463D0AAB7E 2016-11-11 0536B088-D3DE-4C0E-903F-C2463D0AAB7E
從中我想通過日期來計算用戶名和組。 我應該是這樣的:
Date | Unique | Returning | New ..09 | 4 | 1 | 3 ..10 | 2 | 1 | 1 ..11 | 1 | 1 | 0
我該怎麼做呢? 我有這個查詢。
select
cast(EventTime as date) as 'Date',
count(distinct UserId) + count(distinct case when UserId is null then 1 end) as 'Unique users',
0 as 'Returning users',
0 as 'New users'
from
TelemetryData
where
DiscountId = '5F8851DD-DF77-46DC-885E-46ECA93F021C' and EventName = 'DiscountClick'
group by
cast(EventTime as date)`
唯一用戶=唯一與NULL太!
Returing用戶=用戶ID誰點擊了1倍以上isnull(sum(case when UserId(here shoudld be count) > 1 then 1 else 0 end), 1)
唯一一個誰點擊新用戶! isnull(sum(case when UserId(count also) = 1 then 1 else 0 end), 1)
@EDIT: 好的,你的兩個結果工作完美。但我現在需要將其與其他查詢集成。 SELECT '5F8851DD-DF77-46DC-885E-46ECA93F021C', cast([dbo].[TelemetryData].[EventTime] as date) as 'Date', sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountLike' then 1 else 0 end) as 'Likes', sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountDislike' then 1 else 0 end) as 'Dis likes', sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountSharing' then 1 else 0 end) as 'Shares', SUM(case when [dbo].[TelemetryData].[EventName]='DiscountView' then 1 else 0 end) as 'Views', SUM(case when [dbo].[TelemetryData].[EventName]='DiscountClick' then 1 else 0 end) as 'Clicks', Sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountCode' then 1 else 0 end) as 'Downloaded codes', Sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountSave' then 1 else 0 end) as 'Saves', sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountClickWWW' then 1 else 0 end) as 'Page redirections', Round( cast(Sum(case when [dbo].[TelemetryData].[EventName]='DiscountClick' then 1 else 0 end) as float) / cast( case when SUM(case when [dbo].[TelemetryData].[EventName]='DiscountView' then 1 else 0 end) = 0 then 1 else SUM(case when [dbo].[TelemetryData].[EventName]='DiscountView' then 1 else 0 end) end as float) * 100, 2) as 'Average CTR', 0 as 'Unique users', 0 as 'New users', 0 as 'Returning users', Sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountCommentPositive' then 1 else 0 end) as 'Positive comments', sum(case when [dbo].[TelemetryData].[EventName] = 'DiscountCommentNegative' then 1 else 0 end) as 'Negative comments' from [dbo].[TelemetryData] where [dbo].[TelemetryData].[DiscountId] = '5F8851DD-DF77-46DC-885E-46ECA93F021C' and ([dbo].[TelemetryData].[EventName] = 'DiscountView' or [dbo].[TelemetryData].[EventName] = 'DiscountClick' or [dbo].[TelemetryData].[EventName] = 'DiscountDislike' or [dbo].[TelemetryData].[EventName] = 'DiscountCode' or [dbo].[TelemetryData].[EventName] = 'DiscountLike' or [dbo].[TelemetryData].[EventName] = 'DiscountSharing' or [dbo].[TelemetryData].[EventName] = 'DiscountClickWWW' or [dbo].[TelemetryData].[EventName] = 'DiscountSave' or [dbo].[TelemetryData].[EventName] = 'DiscountCommentPositive' or [dbo].[TelemetryData].[EventName] = 'DiscountCommentNegative') group by cast([dbo].[TelemetryData].[EventTime] as date) order by cast([dbo].[TelemetryData].[EventTime] as date) asc
現在,這將是很難......
您的示例數據有兩列(哪些?),但您的查詢至少引用了3列。 – jarlh
您正在使用哪些DBMS? –
數據有更多的列,但我需要olny在這兩個操作。數據和用戶ID。 – Nerf