Q&A for professionals and students of engineering
DECLARE @Tag1 nvarchar(max) = 'angularjs' DECLARE @Tag2 nvarchar(max) = 'knockout.js' DECLARE @1MonthsAgo datetime = DATEADD(month, -1, GETDATE()) DECLARE @2MonthsAgo datetime = DATEADD(month, -2, GETDATE()) DECLARE @3MonthsAgo datetime = DATEADD(month, -3, GETDATE()) DECLARE @4MonthsAgo datetime = DATEADD(month, -4, GETDATE()) DECLARE @Tag1Count1Months decimal (12,6), @Tag1Count1MonthsText nvarchar(max), @t1g1 decimal (12,6), @t1g1Text nvarchar(max) DECLARE @Tag1Count2Months decimal (12,6), @Tag1Count2MonthsText nvarchar(max), @t1g2 decimal (12,6), @t1g2Text nvarchar(max) DECLARE @Tag1Count3Months decimal (12,6), @Tag1Count3MonthsText nvarchar(max), @t1g3 decimal (12,6), @t1g3Text nvarchar(max) DECLARE @Tag1Count4Months decimal (12,6), @Tag1Count4MonthsText nvarchar(max) -- Tag 1 Activity Last 3 months SET @Tag1Count4Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag1 AND posts.creationdate > @1MonthsAgo group by tagname); SET @Tag1Count3Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag1 AND posts.creationdate > @2MonthsAgo and posts.creationdate < @1MonthsAgo group by tagname); SET @Tag1Count2Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag1 AND posts.creationdate > @3MonthsAgo and posts.creationdate < @2MonthsAgo group by tagname); SET @Tag1Count1Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag1 AND posts.creationdate > @4MonthsAgo and posts.creationdate < @3MonthsAgo group by tagname); SET @Tag1Count4MonthsText = convert(varchar,convert(int,@Tag1Count4Months)) SET @t1g1 = (@Tag1Count3Months-@Tag1Count4Months) / @Tag1Count3Months * 100.0; SET @t1g1Text = convert(varchar,convert(decimal(5,2),@t1g1)) + '%' SET @Tag1Count3MonthsText = convert(varchar,convert(int,@Tag1Count3Months)) SET @t1g2 = (@Tag1Count2Months-@Tag1Count3Months) / @Tag1Count2Months * 100.0; SET @t1g2Text = convert(varchar,convert(decimal(5,2),@t1g2)) + '%' SET @Tag1Count2MonthsText = convert(varchar,convert(int,@Tag1Count2Months)) SELECT 'Tag', 'Posts', 'Change', 'Date' UNION ALL SELECT @Tag1, @Tag1Count4MonthsText, '-', '4 months ago' UNION ALL SELECT @Tag1, @Tag1Count3MonthsText, @t1g1Text, '3 months ago' UNION ALL SELECT @Tag1, @Tag1Count2MonthsText, @t1g2Text, '2 months ago'