我在Stack Exchange Data Explorer中使用此查询:
select id, reputation
from users
where reputation >300000
我应该在这个查询中添加什么以便有一个带有用户“最佳”标签的附加列?
这是用户得分最高和/或用户拥有最多帖子(问题、答案)的标签。
例如,在我的用户页面中,在顶部标签中,我可以看到r。
我在Stack Exchange Data Explorer中使用此查询:
select id, reputation
from users
where reputation >300000
我应该在这个查询中添加什么以便有一个带有用户“最佳”标签的附加列?
这是用户得分最高和/或用户拥有最多帖子(问题、答案)的标签。
例如,在我的用户页面中,在顶部标签中,我可以看到r。
这是使用Common Table Expressions (CTE)和Correlated Subqueries的一种方法。
在 SEDE 中查看:data.stackexchange.com/stackoverflow/query/815284/...
WITH tagAndUserStats AS (
SELECT
t.tagname,
p.owneruserid AS userid,
SUM (p.score) AS tagScore,
COUNT (p.id) AS postCount
FROM posts p
INNER JOIN posttags pt ON pt.postid = COALESCE (p.parentid, p.id)
INNER JOIN tags t ON pt.tagid = t.id
WHERE p.owneruserid >= 1
AND p.posttypeid IN (1, 2)
GROUP BY t.tagname,
p.owneruserid
)
SELECT
u.id as [User Link],
u.Reputation,
( SELECT TOP 1 tu.tagname
FROM tagAndUserStats tu
WHERE tu.userid = u.id
ORDER BY tu.tagScore DESC
) AS [Top Tag by Score],
( SELECT TOP 1 tu.tagname
FROM tagAndUserStats tu
WHERE tu.userid = u.id
ORDER BY tu.postCount DESC
) AS [Top Tag by Posts]
FROM users u
WHERE u.reputation > 300000
ORDER BY u.reputation DESC
返回结果如下:
User Link Reputation Top Tag by Score Top Tag by Posts 乔恩斯基特 1010838 c# c# BalusC 784437 java jsf 达林·迪米特洛夫 783553 c# c# VonC 753855 混帐
笔记: