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, чтобы получить то, что вам нужно. Вам нужно сгруппировать по типу

Другие вопросы по тегам