그누보드를 사용중 쿼리를 만드는데 몇시간 썼는데 도저히 답이안나와서 질문남깁니다 ㅠㅠ
g5_write_test 라는 게시판이 있습니다.
여기 게시판에
약 2000명정도의 회원은 각각 글을 1번 ~ 20번 등
본인이 원하는 대로 글을 작성하는 자유게시판입니다.
제가 궁금한것은
여기 test라는 게시판의 글작성자 mb_id 가
1회 글을 작성한 사람의 수 , 여러번 글을 작성한 사람의 수를 쿼리로 구하고싶습니다.
이유는 재작성, 1회작성 이렇게 두가지를 나누어서 퍼센트 형식으로
test라는 게시판에 글을 작성한 회원들이 몇퍼센트로 재작성을 했고, 1회 작성은 몇퍼센트인지
백분율 그래프로 표시해주기 위해서
그 숫자가 필요합니다..
쿼리로 간단하게 하는 방법이있을까요?
// . 1회 글 작성한 회원 SELECT count(DISTINCT `mb_id`) as cnt from g5_write_test
이렇게 쿼리를 해보니 총 몇명의 회원이(중복없이) 게시글을 남겼는지 개수가 나옵니다.
제가 원하는 방식은 전체 게시글의 글쓴이 mb_id 중 한번만 쓴사람은 몇명이고 한번이상의 게시글을 작성한 회원이 각각 몇명인지
구하고싶습니다.
한번에 가져오고싶어서 하나로 할수있을까해서 질문남겨봅니다 ㅠ
쿼리문을 두번사용하면 각각 구해올수있긴하지만 한번에 row에 넣어서 가져오고싶어서 그렇습니다. ㅠㅠ
SELECT NVL(SUM(DECODE(CNT,1,1)),0) WRITE1 -- 1번 적은 사람 수 , NVL(SUM(DECODE(CNT,1,NULL,1)),0) WRITEMORETHAN1 -- 1번 이상 적은 사람 수 , NVL(SUM(DECODE(CNT,1,1)),0)/SUM(MBCNT)*100 PEROF1 -- 1번 적은 사람 비율 , NVL(SUM(DECODE(CNT,1,NULL,1)),0)/SUM(MBCNT)*100 PEROFMORETHAN1 -- 1번 이상 적은 사람 비율 FROM ( SELECT COUNT(MB_ID) CNT, 1 MBCNT FROM G5_WRITE_TEST GROUP BY MB_ID )
SELECT cnt_1 , cnt_2 , cnt_tot , ROUND(cnt_1 / cnt_tot * 100, 2) rat_1 , ROUND(cnt_2 / cnt_tot * 100, 2) rat_2 FROM (SELECT COUNT(CASE WHEN cnt = 1 THEN 1 END) cnt_1 , COUNT(CASE WHEN cnt > 1 THEN 1 END) cnt_2 , COUNT(*) cnt_tot FROM (SELECT mb_id , COUNT(*) cnt FROM g5_write_test GROUP BY mb_id ) a ) a ;