본문 바로가기

개발중/MYSQL

SQL 삽질 기록 : (

728x90
반응형

사용자 통계를 뽑아야 한다.

검색 조건은 고객사 별로 뽑아야 하고,

 

자 천천히 생각을 해보자.

 

1. 로그 정보 + 고객 정보

액션 로그 테이블과, 고객 테이블을 기준으로 user_seq 가 일치하는걸 추출 🤣

 

액션 로그에는 데이터가 존재하지 않지만

고객정보에 존재한다면 그 고객의 NULL 인 데이터도 필요해

 

그러기 위해서 RIGHT OUTER JOIN 을 사용했다.

 

SELECT L.user_seq   
	 , COUNT(L.action_seq) AS CNT
	 , L.action_seq 
	 , U.user_seq
 FROM ACTION_LOG_3 AS L  RIGHT OUTER JOIN ( SELECT U.* 
					                          FROM USER U ) AS U 
                                       ON  L.user_seq = U.user_seq 
  GROUP BY L.user_seq
		, L.action_seq
;

 

2. 고객사와 JOIN 

1 에서 구한 ( 로그 + 고객정보 ) 와 고객사의 정보와 ( 로그 + 고객정보 ) 를 JOIN

 

근데 왜 여기서 ,,는 1에서 구한 로그정보가 없는 고객 정보는 안나오는걸까. 

SELECT TL1.user_seq     AS user_seq,
       C.com_name       AS com_name,
       C.com_seq        AS com_seq  
  FROM ( SELECT  COUNT(L.action_seq) AS CNT
                , L.action_seq 
                , U.user_seq
           FROM ACTION_LOG_3 AS L RIGHT OUTER JOIN ( SELECT U.* 
                                                       FROM USER U ) AS U 
                                                ON  L.user_seq = U.user_seq 
       GROUP BY L.user_seq
              , L.action_seq
	    ) TL1 
			, USER TU1
			, COMPANY C
WHERE TU1.user_seq = TL1.user_seq
  AND C.com_seq  = TU1.com_seq 
GROUP BY user_seq 
;

 

아 모르겠다 망했다.

기껏 다 만들었는데,

로그 기록이 없는 사용자도 출력을 해야 된다는 것을 미리 파악하지 못한 탓에 망해버렸다.

 

분명히 OUTER JOIN 하면 될 것 같은데 안되서 망해버렸다.

기존 것 그대로 가져다 쓰게 생겼다. 

정말 슬프다 . 🤣

 


 

728x90
반응형