在数据浏览器中查询增长最快的标签?

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 是最快的浏览器

增长 numpy 数值数组的最快方法

私有内存浏览器的增长速度比JavaScript应用程序的预期快得多

dotnet 是 前30个增长最快速度的开源项目中排名第一的开发平台