Запрос для наиболее быстро растущих тегов в обозревателе данных?
Я бы хотел сравнить популярность тегов между двумя месяцами, упорядоченными по самым большим изменениям.
Я разработал, как подсчитать количество тегов в месяц, но не как их сравнить. Вот что у меня есть до сих пор:
select TOP 10
tags.tagname, count(*) AS tagcount
from Posts
INNER JOIN PostTags ON PostTags.PostId = Posts.id
INNER JOIN Tags ON Tags.id = PostTags.TagId
where
datepart(year, Posts.CreationDate) = 2011 and
datepart(month, Posts.CreationDate) = 1
Group by tags.tagname
Order by tagcount DESC
http://data.stackexchange.com/stackoverflow/qe/924/query-count-tags-from-daterange
(Примечание: Вы можете клонировать, редактировать на месте и запускать его)
Я новичок в SQL. Кажется, мне просто нужно создать второй запрос за предыдущий месяц (декабрь 2010), а затем объединить эти два запроса со столбцом, который является prevMonth.count - nextMonth.count
и порядок по этому столбцу (получение только верхнего X, поэтому это не займет вечность).
Но я не могу решить, как объединить два запроса таким образом - я думаю, что вы должны быть в состоянии вложить их, но я не могу заставить его работать. Другой способ-создать временную таблицу - это кажется мне неэффективным, но, может быть, это правильный путь?
Большое спасибо за любую помощь!
Кстати: что я хотел бы сделать дальше:
После этого я хотел бы найти скорость роста (а не только абсолютное изменение чисел). Это просто
(new-old)/old
. Вроде скорость, но нормализованная.Затем, теги, скорость роста которых увеличивается больше всего-т. е. которые имеют экспоненциальный рост. Для этого потребуется 3 месяца: рассчитайте скорость изменения между месяцами 1 и 2, а также между месяцами 2 и 3. Разница между ними-это скорость изменения скорости изменения. Это как ускорение.
[ Это является сигналом для роста новых технологий, которые часто начинаются с малого в очень специфическом использовании. Люди в этой маленькой области говорят друг с другом, и хорошие идеи передаются в цепной реакции: один человек говорит Два, каждый говорит еще два и так далее. Эта ниша может быть полностью преобразована через некоторое время, и, возможно, она распространится на другую, аналогичную нишу. См. "видя, что дальше", парень дилеммы новатора. ]
Вот более поздняя версия, используя ответ JNK: http://data.stackexchange.com/stackoverflow/q/92869/query-tags-with-highest-increase-in-growth-over-3-months
И... самый быстрорастущий тег-это... facebook-с#-СДК. Не знаю, насколько это полезно, но это интересный способ просмотреть так.
Ответы - Запрос для наиболее быстро растущих тегов в обозревателе данных? / Query for fastest growing tags in data explorer?

15.02.2011 05:11:21
Используйте # Временные Таблицы:
-- QUERY: count tags from daterange
-- TODO: compare from two different dateranges...
select TOP 10
tags.tagname, count(*) AS tagcount
INTO #TagCountTemp1
from Posts
INNER JOIN PostTags ON PostTags.PostId = Posts.id
INNER JOIN Tags ON Tags.id = PostTags.TagId
where
datepart(year, Posts.CreationDate) = 2011 and
datepart(month, Posts.CreationDate) = 1
Group by tags.tagname
Order by tagcount DESC
select TOP 10
tags.tagname, count(*) AS tagcount
INTO #TagCountTemp2
from Posts
INNER JOIN PostTags ON PostTags.PostId = Posts.id
INNER JOIN Tags ON Tags.id = PostTags.TagId
where
datepart(year, Posts.CreationDate) = 2010 and
datepart(month, Posts.CreationDate) = 12
Group by tags.tagname
Order by tagcount DESC
SELECT TOP 10
t2.tagname, t2.tagcount as 'Month 1', t1.tagcount as 'Month 2', (t1.tagcount-t2.tagcount) as 'Increase'
FROM #TagCountTemp1 as t1
LEFT JOIN #TagCountTemp2 as t2
ON T1.tagname = t2.tagname
ORDER BY (t1.tagcount-t2.tagcount) desc
Это сработало отлично для меня!

TOP 10
из первых двух вариантов и т. д. и т. д.-И добавил, что сделал это за 3 месяца: data.stackexchange.com/stackoverflow/q/92869/…