Q&A for professional and enthusiast programmers
-- To use this tool, enter the name of any two StackOverflow tags -- in the input fields below. -- -- Size and growth trends will be shown over the last 6 months. -- -- The size of the ecosystem and community support is an important -- part of choosing technology. This tool is intended to do that. -- -- http://whitneyland.com -- DECLARE @Tag1 nvarchar(max) = ##Tag1:string## DECLARE @Tag2 nvarchar(max) = ##Tag2:string## DECLARE @w1 decimal (12,6) = 1.0 DECLARE @w2 decimal (12,6) = 1.2 DECLARE @w3 decimal (12,6) = 1.4 DECLARE @w4 decimal (12,6) = 1.6 DECLARE @w5 decimal (12,6) = 1.8 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 @5MonthsAgo datetime = DATEADD(month, -5, GETDATE()) DECLARE @6MonthsAgo datetime = DATEADD(month, -6, GETDATE()) DECLARE @Tag1Mass int, @Tag1MassText nvarchar(max), @Tag1Momentum decimal (12,6), @Tag1MomentumText nvarchar(max) DECLARE @Tag2Mass int, @Tag2MassText nvarchar(max), @Tag2Momentum decimal (12,6), @Tag2MomentumText nvarchar(max) 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), @t1g4 decimal (12,6), @t1g4Text nvarchar(max) DECLARE @Tag1Count5Months decimal (12,6), @Tag1Count5MonthsText nvarchar(max), @t1g5 decimal (12,6), @t1g5Text nvarchar(max) DECLARE @Tag1Count6Months decimal (12,6), @Tag1Count6MonthsText nvarchar(max) DECLARE @Tag2Count1Months decimal (12,6), @Tag2Count1MonthsText nvarchar(max), @t2g1 decimal (12,6), @t2g1Text nvarchar(max) DECLARE @Tag2Count2Months decimal (12,6), @Tag2Count2MonthsText nvarchar(max), @t2g2 decimal (12,6), @t2g2Text nvarchar(max) DECLARE @Tag2Count3Months decimal (12,6), @Tag2Count3MonthsText nvarchar(max), @t2g3 decimal (12,6), @t2g3Text nvarchar(max) DECLARE @Tag2Count4Months decimal (12,6), @Tag2Count4MonthsText nvarchar(max), @t2g4 decimal (12,6), @t2g4Text nvarchar(max) DECLARE @Tag2Count5Months decimal (12,6), @Tag2Count5MonthsText nvarchar(max), @t2g5 decimal (12,6), @t2g5Text nvarchar(max) DECLARE @Tag2Count6Months decimal (12,6), @Tag2Count6MonthsText nvarchar(max) -- Tag 1 Activity 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 > @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 > @2MonthsAgo 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 > @3MonthsAgo and posts.creationdate < @2MonthsAgo group by tagname); 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 > @4MonthsAgo and posts.creationdate < @3MonthsAgo group by tagname); SET @Tag1Count5Months = (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 > @5MonthsAgo and posts.creationdate < @4MonthsAgo group by tagname); SET @Tag1Count6Months = (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 > @6MonthsAgo and posts.creationdate < @5MonthsAgo group by tagname); SET @Tag1Count6MonthsText = convert(varchar,convert(int,@Tag1Count6Months)) SET @t1g1 = (@Tag1Count5Months-@Tag1Count6Months) / @Tag1Count6Months * 100.0; SET @t1g1Text = convert(varchar,convert(decimal(5,2),@t1g1)) + '%' SET @Tag1Count5MonthsText = convert(varchar,convert(int,@Tag1Count5Months)) SET @t1g2 = (@Tag1Count4Months-@Tag1Count5Months) / @Tag1Count5Months * 100.0; SET @t1g2Text = convert(varchar,convert(decimal(5,2),@t1g2)) + '%' SET @Tag1Count4MonthsText = convert(varchar,convert(int,@Tag1Count4Months)) SET @t1g3 = (@Tag1Count3Months-@Tag1Count4Months) / @Tag1Count4Months * 100.0; SET @t1g3Text = convert(varchar,convert(decimal(5,2),@t1g3)) + '%' SET @Tag1Count3MonthsText = convert(varchar,convert(int,@Tag1Count3Months)) SET @t1g4 = (@Tag1Count2Months-@Tag1Count3Months) / @Tag1Count3Months * 100.0; SET @t1g4Text = convert(varchar,convert(decimal(5,2),@t1g4)) + '%' SET @Tag1Count2MonthsText = convert(varchar,convert(int,@Tag1Count2Months)) SET @t1g5 = (@Tag1Count1Months-@Tag1Count2Months) / @Tag1Count2Months * 100.0; SET @t1g5Text = convert(varchar,convert(decimal(5,2),@t1g5)) + '%' SET @Tag1Count1MonthsText = convert(varchar,convert(int,@Tag1Count1Months)) SET @Tag1Mass = @Tag1Count1Months + @Tag1Count2Months + @Tag1Count3Months + @Tag1Count4Months + @Tag1Count5Months + @Tag1Count6Months SET @Tag1MassText = convert(varchar,convert(int,@Tag1Mass)) SET @Tag1Momentum = (@t1g5*@w5+@t1g4*@w4+@t1g3*@w3+@t1g2*@w2+@t1g1*@w1) / (@w5+@w4+@w3+@w2+@w1) SET @Tag1MomentumText = convert(varchar,convert(decimal(5,2),@Tag1Momentum)) + '%' -- Tag 2 Activity SET @Tag2Count1Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @1MonthsAgo group by tagname); SET @Tag2Count2Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @2MonthsAgo and posts.creationdate < @1MonthsAgo group by tagname); SET @Tag2Count3Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @3MonthsAgo and posts.creationdate < @2MonthsAgo group by tagname); SET @Tag2Count4Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @4MonthsAgo and posts.creationdate < @3MonthsAgo group by tagname); SET @Tag2Count5Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @5MonthsAgo and posts.creationdate < @4MonthsAgo group by tagname); SET @Tag2Count6Months = (SELECT COUNT(*) AS Posts FROM Tags INNER JOIN PostTags ON PostTags.TagId = Tags.id INNER JOIN Posts ON Posts.ParentId = PostTags.PostId where tagname = @Tag2 AND posts.creationdate > @6MonthsAgo and posts.creationdate < @5MonthsAgo group by tagname); SET @Tag2Count6MonthsText = convert(varchar,convert(int,@Tag2Count6Months)) SET @t2g1 = (@Tag2Count5Months-@Tag2Count6Months) / @Tag2Count6Months * 100.0; SET @t2g1Text = convert(varchar,convert(decimal(5,2),@t2g1)) + '%' SET @Tag2Count5MonthsText = convert(varchar,convert(int,@Tag2Count5Months)) SET @t2g2 = (@Tag2Count4Months-@Tag2Count5Months) / @Tag2Count5Months * 100.0; SET @t2g2Text = convert(varchar,convert(decimal(5,2),@t2g2)) + '%' SET @Tag2Count4MonthsText = convert(varchar,convert(int,@Tag2Count4Months)) SET @t2g3 = (@Tag2Count3Months-@Tag2Count4Months) / @Tag2Count4Months * 100.0; SET @t2g3Text = convert(varchar,convert(decimal(5,2),@t2g3)) + '%' SET @Tag2Count3MonthsText = convert(varchar,convert(int,@Tag2Count3Months)) SET @t2g4 = (@Tag2Count2Months-@Tag2Count3Months) / @Tag2Count3Months * 100.0; SET @t2g4Text = convert(varchar,convert(decimal(5,2),@t2g4)) + '%' SET @Tag2Count2MonthsText = convert(varchar,convert(int,@Tag2Count2Months)) SET @t2g5 = (@Tag2Count1Months-@Tag2Count2Months) / @Tag2Count2Months * 100.0; SET @t2g5Text = convert(varchar,convert(decimal(5,2),@t2g5)) + '%' SET @Tag2Count1MonthsText = convert(varchar,convert(int,@Tag2Count1Months)) SET @Tag2Mass = @Tag2Count1Months + @Tag2Count2Months + @Tag2Count3Months + @Tag2Count4Months + @Tag2Count5Months + @Tag2Count6Months SET @Tag2MassText = convert(varchar,convert(int,@Tag2Mass)) SET @Tag2Momentum = (@t2g5*@w5+@t2g4*@w4+@t2g3*@w3+@t2g2*@w2+@t2g1*@w1) / (@w5+@w4+@w3+@w2+@w1) SET @Tag2MomentumText = convert(varchar,convert(decimal(5,2),@Tag2Momentum)) + '%' SELECT '', 'Mass', 'Momentum', '' UNION ALL SELECT @Tag1, @Tag1MassText, @Tag1MomentumText, '' UNION ALL SELECT @Tag2, @Tag2MassText, @Tag2MomentumText, '' UNION ALL SELECT '', '', '', '' UNION ALL SELECT 'Tag', 'Posts', 'Change', 'Date' UNION ALL SELECT @Tag1, @Tag1Count6MonthsText, '', '6 months ago' UNION ALL SELECT @Tag1, @Tag1Count5MonthsText, @t1g1Text, '5 months ago' UNION ALL SELECT @Tag1, @Tag1Count4MonthsText, @t1g2Text, '4 months ago' UNION ALL SELECT @Tag1, @Tag1Count3MonthsText, @t1g3Text, '3 months ago' UNION ALL SELECT @Tag1, @Tag1Count2MonthsText, @t1g4Text, '2 months ago' UNION ALL SELECT @Tag1, @Tag1Count1MonthsText, @t1g5Text, 'last month' UNION ALL SELECT '', '', '', '' UNION ALL SELECT @Tag2, @Tag2Count6MonthsText, '', '6 months ago' UNION ALL SELECT @Tag2, @Tag2Count5MonthsText, @t2g1Text, '5 months ago' UNION ALL SELECT @Tag2, @Tag2Count4MonthsText, @t2g2Text, '4 months ago' UNION ALL SELECT @Tag2, @Tag2Count3MonthsText, @t2g3Text, '3 months ago' UNION ALL SELECT @Tag2, @Tag2Count2MonthsText, @t2g4Text, '2 months ago' UNION ALL SELECT @Tag2, @Tag2Count1MonthsText, @t2g5Text, 'last month'