회원 통계 부분 질문입니다.. 0 4 1,285

by 강영수 [2008.04.02 15:16:42]


안녕하세요..
질문이 있어서 이렇게 질문을 드리겠되었습니다..

회원 통계관련인데요..
아래는 화면에 나와야할 형식이구요..
________________________________________________________________
회원수 | 구매회원수 |      매출     | 이전달신장율 | 지난해신장율
----------------------------------------------------------------
100명  | 10명           |  1,000원     |      40%        |    30%
________________________________________________________________

테이블의 칼럼은 이렇게 되어있습니다.
 MEM_ID -- 회원ID
 JOIN_DATE - 회원 가입일
 FIRST_ORDER_DATE -- 구매일
 TOT_AMT  -- 매출
 REG_DATE -- 등록일
한테이블에서 이렇게 되어있구.
이전달신장율 = ((이전달회원/이번달회원) -1) *100
지난해신장율 = ((지난해회원/지난해회원) -1) *100

이렇게 되어있어요..

아래는 제가 짠 쿼리인데요.. 아직 완벽한건 아니지만.. 
저렇게 한 테이블을 가지고 자꾸만 SELECT 한거라.. 제가 볼때 잘못짠거같기도 한데요..
아직 쿼리에대해서 저 정도로 밖에 못짜는 ....

위에 있는 화면처럼 될려면 어떻게 해야하는지...

SELECT	AA.CNT -- 회원수
                BB.ORDER_MEM -- 구매회원수
                AA.TOT_AMT -- 매출
                --------구현해야할 신장율.........
                	
FROM (
	SELECT COUNT(MEM_ID) AS CNT -- 회원수
		,SUM( TOT_AMT) AS TOT_AMT -- 매출
	FROM T_MEM
	WHERE REG_DATE BETWEEN '2008-03-01' AND '2008-03-20'
	)AA, -- 회원수 구하기		
	(
	SELECT COUNT(MEM_ID) AS ORDER_MEM
	FROM T_MEM
	WHERE FIRST_ORDER_DATE IS NOT NULL
	           AND REG_DATE BETWEEN '2008-03-01' AND '2008-03-20'
	) BB, -- 구매 회원수
	(
	SELECT SUBSTR(REG_DATE,1,6) AS REG_DATE
		 ,COUNT(MEM_ID) AS FIRST_MEM
	FROM T_MEM
	WHERE REG_DATE BETWEEN '2008-02-01' AND '2008-02-20'
	GROUP BY REG_DATE
	) CC, -- 전달 회원수
               (
                SELECT SUBSTR(REG_DATE,1,6) AS REG_DATE
		 ,COUNT(MEM_ID) AS FIRST_MEM
	FROM T_MEM
	WHERE REG_DATE BETWEEN '2008-03-01' AND '2008-03-20'
	GROUP BY REG_DATE
	) DD, --  이번달 회원수
	(
	SELECT SUBSTR(REG_DATE,1,3)
		  ,COUNT(MEM_ID) AS LAST_MEM
	FROM T_MEM
	WHERE REG_DATE BETWEEN '2007-03-01' AND '2008-03-20'
	GROUP BY REG_DATE
	) EE -- 전년 회원수
			



위에 있는 화면처럼 될려면 어떻게 짜야 하는지..
고수님들의 답변 부탁드립니다..

좋은 하루 되세요^^

 

by 김강환 [2008.04.02 16:00:01]
몇가지 질문이 있는데요...
회원과 구매 엔티티는 1:다의 관계를 가지는데 어떻게 하나의 테이블에 있는지 이해가 안되네요. 즉 한 회원이 여러번 구매를 할 수 있는데 테이블이 분리되지 않은 이유는? 혹 FIRST_ORDER_DATE 에는 가장 최근에 구매한 날짜가 있는 건가요? 즉 1월에 구매후 구매를 하지 않은 회원은 1월날짜가 그대로 있다가 4월에 구매를 하면 4월 날짜가 셋팅되는 건가요? 그리고 매출도 회원의 누적 구매액인가요 아니면 가장 최근의 구매액인가요?

by 마농 [2008.04.02 16:09:07]
제 생각도 김강환님과 동일합니다.
테이를 설계 및 개념 정리부터 새로 하셔야 할것 같습니다.
우선, 회원테이블과 구매테이블이 따로 있어야 하구요.
매출이나 신장율도 회원수 기준이 아닌 구매금액 기준이 되야 할것 같습니다.
기간 조회가 20일로 한정되어 있는것도 이상하구요.

by 강영수 [2008.04.02 16:12:08]
우선 FIRST_ORDER_DATE는 회원이 최초 구매한 날짜를 가지고 있으며, 그 다음 주문시에는 업데이트 되지 않습니다. 단순히 최초 구매일을 알려고 만들어 놓은 칼럼이구요..

매출은 온 오프라인 매장 개념인데요.. 오프라인 매장에서 발생한 매출을 온라인 TOT_AMT 로 쏴줘요.. 온라인의 회원이 그대로 오프라인회원이거든요..
오프라인으로 가입해도 온라인으로 반영되구요..

그래서 온 오프라인이 회원별 금액을 보유할수 있고 누적시킬수 있어요^^;;

TOT_AMT 는 누적금액입니다..

by 강영수 [2008.04.02 16:13:54]
--- 마농님 답변 -----

기간조회는 임시로 저렇게 올려놓은거에요...
제가 간단하게 이거저거 테스트 한거를 올려서 아마두^^;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입