Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用两个SEDE(SQL)查询作为第三个查询的输入?_Sql - Fatal编程技术网

如何使用两个SEDE(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

起初,这似乎是一个元问题,但实际上是关于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 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