Tsql 使用SEDE修改查询以与多个用户协作
我很难让我的查询执行我希望它执行的操作 如果我为一个用户ID运行它:2140173,它似乎工作正常Tsql 使用SEDE修改查询以与多个用户协作,tsql,dataexplorer,sede,Tsql,Dataexplorer,Sede,我很难让我的查询执行我希望它执行的操作 如果我为一个用户ID运行它:2140173,它似乎工作正常 Select UserId, (Select Count(VoteTypeId) From SuggestedEditVotes where UserId = 2140173) as 'Total', (Select Count(VoteTypeId) From SuggestedEditVotes where UserId = 2140173 and VoteTypeId = 2) As 'A
Select UserId,
(Select Count(VoteTypeId) From SuggestedEditVotes where UserId = 2140173) as 'Total',
(Select Count(VoteTypeId) From SuggestedEditVotes where UserId = 2140173 and VoteTypeId = 2) As 'Accepted',
(Select Count(VoteTypeId) From SuggestedEditVotes where UserId = 2140173 and VoteTypeId = 3) As 'Rejected'
from SuggestedEditVotes
inner join Users on SuggestedEditVotes.UserId = Users.Id
where Users.Reputation > 2000 and UserId = 2140173
group by UserId
having Count(VoteTypeId) > 0
它回来了
UserId Total Accepted Rejected
2140173 2230 1145 1085
但是,当我尝试稍微修改它并为所有信誉超过2000的用户运行它时,它不会给我正确的结果:/
由于我不确定在它们的where
子句中放什么,所以我一直在使用sub-Select语句
这是我尝试过的,但它返回总数,我希望它是每个用户Id的计数
Select UserId,
(Select Count(VoteTypeId) From SuggestedEditVotes) as 'Total',
(Select Count(VoteTypeId) From SuggestedEditVotes where VoteTypeId = 2) As 'Accepted',
(Select Count(VoteTypeId) From SuggestedEditVotes where VoteTypeId = 3) As 'Rejected'
from SuggestedEditVotes
inner join Users on SuggestedEditVotes.UserId = Users.Id
where Users.Reputation > 2000
group by UserId
having Count(VoteTypeId) > 0
有人能帮忙吗
注意:试试这个:
SELECT UserId,
COUNT(VoteTypeId) AS 'Total',
COUNT(
CASE
WHEN VoteTypeId = 2
THEN VoteTypeId
ELSE NULL
END) AS 'Accepted',
COUNT(
CASE
WHEN VoteTypeId = 3
THEN VoteTypeId
ELSE NULL
END) AS 'Rejected'
FROM SuggestedEditVotes
INNER JOIN Users
ON SuggestedEditVotes.UserId = Users.Id
WHERE Users.Reputation > 2000
GROUP BY UserId
HAVING COUNT(VoteTypeId) > 0
试试这个:
SELECT UserId,
COUNT(VoteTypeId) AS 'Total',
COUNT(
CASE
WHEN VoteTypeId = 2
THEN VoteTypeId
ELSE NULL
END) AS 'Accepted',
COUNT(
CASE
WHEN VoteTypeId = 3
THEN VoteTypeId
ELSE NULL
END) AS 'Rejected'
FROM SuggestedEditVotes
INNER JOIN Users
ON SuggestedEditVotes.UserId = Users.Id
WHERE Users.Reputation > 2000
GROUP BY UserId
HAVING COUNT(VoteTypeId) > 0
试试这个:
SELECT UserId,
COUNT(VoteTypeId) AS 'Total',
COUNT(
CASE
WHEN VoteTypeId = 2
THEN VoteTypeId
ELSE NULL
END) AS 'Accepted',
COUNT(
CASE
WHEN VoteTypeId = 3
THEN VoteTypeId
ELSE NULL
END) AS 'Rejected'
FROM SuggestedEditVotes
INNER JOIN Users
ON SuggestedEditVotes.UserId = Users.Id
WHERE Users.Reputation > 2000
GROUP BY UserId
HAVING COUNT(VoteTypeId) > 0
试试这个:
SELECT UserId,
COUNT(VoteTypeId) AS 'Total',
COUNT(
CASE
WHEN VoteTypeId = 2
THEN VoteTypeId
ELSE NULL
END) AS 'Accepted',
COUNT(
CASE
WHEN VoteTypeId = 3
THEN VoteTypeId
ELSE NULL
END) AS 'Rejected'
FROM SuggestedEditVotes
INNER JOIN Users
ON SuggestedEditVotes.UserId = Users.Id
WHERE Users.Reputation > 2000
GROUP BY UserId
HAVING COUNT(VoteTypeId) > 0