count 쿼리 질문 드립니다. 2

by 쿼리초보 [SQL Query] [2022.03.07 16:18:53]


유저별로 유저가 작성한 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 게시판에서 좀 찾아봤는데 비슷한 쿼리를 찾질 못해서 질문드립니다.

by 마농 [2022.03.07 17:03:16]
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
;

 


by 쿼리초보 [2022.03.07 17:13:53]

아, 감사합니다.

group by a.userId로 유저가 작성한 messageId 리스트를 가져온 다음 그 messageId 들로 reply table에서 어떻게 count를 해야 하나 감이 안왔었는데 이렇게 하면 되는군요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입