在数据浏览器中查询增长最快的标签?
Posted
技术标签:
【中文标题】在数据浏览器中查询增长最快的标签?【英文标题】:Query for fastest growing tags in data explorer? 【发布时间】:2011-06-27 10:45:12 【问题描述】:我想比较两个月内标签的流行度,按变化最大的顺序排列。
我已经弄清楚了如何计算一个月内的标签数量,但不知道如何比较它们。到目前为止,这是我所拥有的:
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
https://data.stackexchange.com/***/qe/924/query-count-tags-from-daterange (注意:您可以克隆、就地编辑并运行它)
我是 SQL 新手。看来我只需要为上个月(2010 年 12 月)创建第二个查询,然后将这两个查询与 prevMonth.count - nextMonth.count
列结合起来,并按该列排序(只得到前 X,所以它没有'不要永远)。
但我不知道如何以这种方式组合两个查询 - 我认为您应该能够嵌套它们,但我无法让它工作。另一种方法是创建一个临时表 - 对我来说似乎效率低下,但也许这是正确的方法?
非常感谢您的帮助!
顺便说一句:接下来我想做什么:
在此之后,我想找出增长率(不仅仅是数字的绝对变化)。那只是(new-old)/old
。类似于速度,但归一化。
然后,增长率增长最快的标签 - 即具有指数增长的标签。这将需要 3 个月:计算第 1 个月和第 2 个月之间以及第 2 个月和第 3 个月之间的变化率。它们之间的差异是变化率的变化率。这就像加速。
[这是新技术发展的信号,通常在非常特定的用途中开始很小。那个小区域的人们互相交谈,好的想法在连锁反应中得到传递:一个人告诉两个人,他们每个人又告诉两个人,依此类推。该利基市场可能会在一段时间后完全转换,并且可能会传播到另一个类似的利基市场。参见“Innovator's Dilemma” 人的“Seeing What's Next”。 ]
这是一个更高版本,使用 JNK 的答案: https://data.stackexchange.com/***/q/92869/query-tags-with-highest-increase-in-growth-over-3-months
而且...增长最快的标签是...facebook-c#-sdk。不知道这有多大用处,但这是浏览 SO 的一种有趣方式。
【问题讨论】:
【参考方案1】:使用#Temp 表:
-- 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
这对我来说很好用!
【讨论】:
谢谢!我交换了 1 和 2(我看到你在列命名中这样做了),从前两个选择中删除了TOP 10
,等等 --- 并添加了超过 3 个月:data.stackexchange.com/***/q/92869/…以上是关于在数据浏览器中查询增长最快的标签?的主要内容,如果未能解决你的问题,请参考以下文章
在 macOS High Sierra 中,Safari 是最快的浏览器