유저별로 유저가 작성한 message들에 달린 reply count를 구하고 싶습니다.
message 테이블
| id |
| userId |
reply 테이블
| id |
| messageId |
댓글 테이블의 messageId는 댓글 테이블의 id 입니다.
원하는 결과
| userId | count(*) |
| 1 | n (userId : 1 유저가 작성한 모든 메세지들에 달린 reply count) |
| 2 | n (userId : 2 유저가 작성한 모든 메세지들에 달린 reply count) |
| 3 | n (userId : 3 유저가 작성한 모든 메세지들에 달린 reply count) |
간단한 쿼리 같아서 비슷한 쿼리를 QnA 게시판에서 좀 찾아봤는데 비슷한 쿼리를 찾질 못해서 질문드립니다.
SELECT a.userId
, COUNT(DISTINCT a.id) message_cnt
, COUNT(b.messageId) reply_cnt
, RANK() OVER(ORDER BY COUNT(b.messageId) DESC) reply_cnt_rank
FROM message a
LEFT OUTER JOIN reply b
ON a.id = b.messageId
GROUP BY a.userId
;
아, 감사합니다.
group by a.userId로 유저가 작성한 messageId 리스트를 가져온 다음 그 messageId 들로 reply table에서 어떻게 count를 해야 하나 감이 안왔었는데 이렇게 하면 되는군요.