如何使用两个SEDE(SQL)查询作为第三个查询的输入?
起初,这似乎是一个元问题,但实际上是关于SQL的 我很好奇堆栈溢出上有多少帖子和哪些帖子是上选和下选的。我试图组合一个查询来找出答案,但无法让它工作 我编写了以下子查询以查找具有一定数量投票权的帖子:如何使用两个SEDE(SQL)查询作为第三个查询的输入?,sql,Sql,起初,这似乎是一个元问题,但实际上是关于SQL的 我很好奇堆栈溢出上有多少帖子和哪些帖子是上选和下选的。我试图组合一个查询来找出答案,但无法让它工作 我编写了以下子查询以查找具有一定数量投票权的帖子: SELECT PostId as [Post Link], COUNT(v.PostId) AS 'Upvote count' FROM Votes v INNER JOIN Posts p ON p.Id=v.PostId WHERE PostTypeId = 1 AND VoteTypeI
SELECT PostId as [Post Link], COUNT(v.PostId) AS 'Upvote count'
FROM Votes v
INNER JOIN Posts p
ON p.Id=v.PostId
WHERE PostTypeId = 1
AND VoteTypeId = 2
GROUP BY v.PostId
HAVING COUNT(v.PostId) > 5
我用了一个类似的来表示反对票
我不知道的是如何编写一个只返回两个子查询结果中出现的帖子的查询。我所有的尝试在语法上都是错误的。有没有一个术语可以用来描述我想做的事,我可以在谷歌上找到它?可能是一个特殊运算符或关键字?如果您的意思是要获取具有特定数量的上升票和特定数量的下降票的答案,请尝试以下操作:
SELECT
PostId as [Post Link],
COUNT(CASE VoteTypeId WHEN 2 THEN v.PostId END) AS 'Upvote count',
COUNT(CASE VoteTypeId WHEN 3 THEN v.PostId END) AS 'Downvote count'
FROM Votes v
INNER JOIN Posts p
ON p.Id=v.PostId
WHERE PostTypeId = 1
AND VoteTypeId IN (2, 3)
GROUP BY v.PostId
HAVING COUNT(CASE VoteTypeId WHEN 2 THEN v.PostId END) > 150
AND COUNT(CASE VoteTypeId WHEN 3 THEN v.PostId END) > 10
这将为您选择同时拥有150张以上赞成票和10张以上反对票的答案。作为备选方案,可在以下网址找到:
set nocount on
declare @VoteStats table (PostId int, up int, down int)
insert @VoteStats
select
PostId,
up = sum(case when VoteTypeId = 2 then 1 else 0 end),
down = sum(case when VoteTypeId = 3 then 1 else 0 end)
from Votes
where VoteTypeId in (2,3)
group by PostId
set nocount off
select top 100 p.id as [Post Link] , up, down from @VoteStats
join Posts p on PostId = p.Id
where down > (up * 0.5) and p.CommunityOwnedDate is null and p.ClosedDate is null
order by up desc