Tsql 如何为十个最常用的标签(在SEDE中)查询十个投票最多的问题?
在SEDE中,我试图针对十个最常用的标记(即JavaScript、HTML等)获取十个最上浮的问题 我了解了如何获取最常用的标签:Tsql 如何为十个最常用的标签(在SEDE中)查询十个投票最多的问题?,tsql,sql-server-2017,dataexplorer,Tsql,Sql Server 2017,Dataexplorer,在SEDE中,我试图针对十个最常用的标记(即JavaScript、HTML等)获取十个最上浮的问题 我了解了如何获取最常用的标签: select Id, TagName, Count from Tags t order by count desc 现在,对于每个标签,我想获得前十名的投票问题。我想我需要某种形式的加入。问题是在Posts表中,标记是一个数组。请参阅。使用PostTags表将标记链接到问题 然后,您可以使用ROW_NUMBER对每个标签的前10个问题进行排名 这里有一个方法: W
select Id, TagName, Count
from Tags t
order by count desc
现在,对于每个标签,我想获得前十名的投票问题。我想我需要某种形式的加入。问题是在Posts表中,标记是一个数组。请参阅。使用PostTags表将标记链接到问题
然后,您可以使用ROW_NUMBER对每个标签的前10个问题进行排名
这里有一个方法:
WITH topTags AS (
SELECT TOP 10
t.Id,
t.TagName,
t.Count,
tagRank = ROW_NUMBER() OVER (ORDER BY t.Count DESC)
FROM Tags t
ORDER BY t.Count DESC
)
SELECT
qbt.TagName AS [Tag],
--qbt.tagRank AS [Tag Rank],
qbt.Count AS [Q's for Tag],
qbt.Score AS [Qst Score],
qbt.Id AS [Post Link],
qbt.qstRow AS [Rank in tag]
FROM (
SELECT
tt.TagName,
--tt.tagRank,
tt.Count,
q.Score,
q.Id,
qstRow = ROW_NUMBER() OVER (PARTITION BY tt.Id ORDER BY tt.Id, q.Score DESC)
FROM topTags tt
LEFT JOIN PostTags pt ON pt.TagId = tt.Id
LEFT JOIN Posts q ON q.ID = pt.PostId
) qbt
WHERE qbt.qstRow <= 10
ORDER BY qbt.Count DESC,
qbt.Score DESC