我想比较两个月标签的受欢迎程度,按最大变化排序。
我已经弄清楚了如何计算一个月内的标签数量,但没有弄清楚如何比较它们。这是我到目前为止所拥有的:
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/stackoverflow/qe/924/query-count-tags-from-daterange
(注意:您可以克隆、就地编辑并运行)
我是 SQL 新手。看来我只需要为上个月(2010 年 12 月)创建第二个查询,然后将这两个查询与 prevMonth.count - nextMonth.count
列结合起来,并按此排序列(只获取前 X,因此不会花很长时间)。
但我不知道如何以这种方式组合两个查询 - 我认为您应该能够嵌套它们,但我无法让它工作。另一种方法是创建一个临时表 - 这对我来说似乎效率低下,但也许这是正确的方法?
非常感谢您的帮助!
顺便说一句:接下来我想做什么:
在此之后,我想找出增长率(而不仅仅是数字的绝对变化)。那只是
(new-old)/old
。类似于速度,但归一化了。然后是增长率增长最快的标签 - 即具有指数增长的标签。这将需要 3 个月:计算第 1 个月和第 2 个月之间以及第 2 个月和第 3 个月之间的变化率。它们之间的差异是变化率的变化率。这就像加速度。
[这是新技术发展的一个信号,这些新技术通常从非常具体的用途开始。那个小区域内的人们互相交谈,好的想法在链式 react 中得到传递:一个人告诉两个人,他们每个人再告诉两个人,依此类推。那个利基市场可能会在一段时间后完全转化,也许它会传播到另一个类似的利基市场。请参阅“Seeing What's Next”,作者是创新者的窘境。 ]
这是一个更高版本,使用 JNK 的回答: https://data.stackexchange.com/stackoverflow/q/92869/query-tags-with-highest-increase-in-growth-over-3-months
而且……增长最快的标签是……facebook-c#-sdk .不知道这有什么用,但这是一种有趣的浏览 SO 的方式。
最佳答案
使用#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
这对我来说效果很好!
关于sql - 在数据资源管理器中查询增长最快的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001393/