작성
·
215
0
안녕하세요 선생님:)
다름이 아니라 join 관련 질문이 있어요.
저번 강의에서도 말씀하신 것처럼 join을 session_id로 하셔야 된다고 하셨는데, 만약에 user_id로 하면 결과 값이 드라마틱하게 달라질까요?
전에 MAU를 신규 사용자와 기존 사용자로 구분할 때는 join을 하실 때 user_id로 하셨는데, 이때는 사용자를 수를 구하는 것에 집중하여 user_id로 한 것일까요?
답변 1
1
안녕하십니까,
어느 테이블과 어느 테이블을 user_id로 조인한다는 건지요?
ga_sess와 orders 테이블을 user_id로 조인한다는 의미로 간주하고 답변드리면,
저번 강의에서도 말씀하신 것처럼 join을 session_id로 하셔야 된다고 하셨는데, 만약에 user_id로 하면 결과 값이 드라마틱하게 달라질까요?
=> 네, 드라마틱하게 달라집니다.
ga_sess 테이블은 user_id로 m, orders 테이블로 user_id로 m이기 때문에 ga_sess와 orders 테이블을 user_id로 조인하면 m:m 조인이 되어서 원하는 결과 집합이 되지 않습니다.
전에 MAU를 신규 사용자와 기존 사용자로 구분할 때는 join을 하실 때 user_id로 하셨는데, 이때는 사용자를 수를 구하는 것에 집중하여 user_id로 한 것일까요?
=> 정확히 어떤 쿼리를 의미하는지 잘 모르겠지만, 그냥 실습 코드중에 ga_sess와 ga_users를 조인하는데 user_id로 왜 조인했는지를 묻는 걸로 간주하고 답변 드리면,
사용자 수를 구하는 거와 별개로, ga_sess를 기준으로 group by를 해야 하는데, 필터링 해야 하는 조건이 ga_users에 잇습니다. 가령, 사용자가 생성된 특정 일시 같은 경우에는 ga_users에 있기 때문에 해당 조건을 ga_users에서 찾고 ga_sess로 연결하는데 이때 연결키가 user_id로 되어 있습니다. 그리고 조인을 했을 때 ga_sess와 ga_users는 user_id 레벨로 1:m 이기 때문에 조인 결과 레벨로 ga_sess로 만들어지기 때문에 원래 ga_sess 집합 레벨로 동일하게 됩니다. 때문에 user_id로 조인했을 뿐입니다.
감사합니다.
감사합니다.