SQL: Как узнать, сколько полезных ответов написал пользователь, используя Stack Exchange Data Explorer?
Я пытаюсь создать SQL-запрос для https://data.stackexchange.com/ котором указан конкретный пользователь переполнения стека, будет указано его количество принятых ответов, количество ответов с оценкой> 0 и количество принятых ответов И / ИЛИ иметь счет> 0.
Вот мой запрос, который только подсчитывает принятые ответы:
DECLARE @UserId int = ##UserId##
SELECT
Count(a.Id) AS Accepted
FROM
Posts q
INNER JOIN
Posts a ON q.AcceptedAnswerId = a.Id
WHERE
a.OwnerUserId = @UserId
AND
a.PostTypeId = 2
Когда вы запускаете его на моем идентификаторе пользователя (2234742), он показывает следующий вывод:
Accepted
70
Я ищу вывод, как следующий:
Accepted Score > 0 Accepted or Score > 0
X X X
Чтобы отредактировать мой существующий запрос, вы можете перейти на мою существующую страницу запроса data.stackexchange.com и нажать "разветвленный запрос" под телом запроса. Схема будет показана справа. Я новичок в SQL, поэтому спасибо за помощь!
NB Помните, что Accepted or Score > 0
это не просто сумма двух других столбцов, потому что есть совпадение!
1 ответ
SELECT
a.id,
sum(case when a.PostTypeId = 2 then 1 end) AS Accepted,
sum(case when a.PostTypeId = someval then 1 end) AS 'score>0',
sum(case when a.PostTypeId = someval then 1 end) AS 'acceptedorscore>0'
FROM Posts q INNER JOIN
Posts a ON q.AcceptedAnswerId = a.Id
WHERE a.OwnerUserId = @UserId
group by a.id, a.PostTypeId
Замените "someval" на posttype, чтобы получить то, что вам нужно. Вам нужно сгруппировать по типу