작성
·
64
0
select page_path, count(*) as page_cnt, count(distinct sess.sess_id) as unique_page_cnt
from ga.ga_sess_hits his
join ga.ga_sess sess
on his.sess_id = sess.sess_id
where visit_stime >= ('2016-11-01'::date - interval '30 days') and visit_stime < '2016-11-01'
and hit_type = 'PAGE'
group by page_path
order by 2 desc;
저는 위와 같이 쿼리를 작성했습니다만, 교육 자료에서 temp_01, temp_02로 각각 나눠서 page_cnt와 unique_page_cnt를 구하는 것에 어떠한 장점이 있어서 교안의 쿼리 대로 작성하는지 궁금합니다. 제가 단순히 생각하기에는 비효율적으로 보여서요! 제 쿼리가 비효율적일 수도 있는데, 장단점을 들어보고 싶습니다.
답변 2
0
안녕하십니까,
강의에서 사용된 쿼리는 설명을 차근차근, 쉽게 하기 위해서 작성되었습니다. 그래서 핵심 블록 단위로 With절을 사용한 것입니다. 강의의 설명을 바탕으로 함축적인 쿼리가 자신에게 맞다고 생각하시면 그게 더 효율적인 쿼리 입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
JUNG JONGSEOK님, 질문 주신 내용에 대해 답변 드리겠습니다.
질문하신 쿼리는 페이지별 조회수와 순수한 페이지 조회수를 동시에 구하는 쿼리로 보입니다. 궁금해 하신 부분은 쿼리를 하나로 작성했을 때와 여러 테이블을 나누어 작성했을 때의 차이인 것 같습니다. 이와 관련한 답변을 드리자면:
쿼리를 하나로 작성했을 때의 장점:
group by
를 통해 필요한 값을 모두 구할 수 있어 처리 속도가 빠를 수 있습니다.select
하게 되므로 코드의 양이 줄어듭니다.쿼리를 여러 테이블로 나누었을 때의 장점:
temp_01
, temp_02
형태로 나누어 작성하면 각 테이블의 역할이 명확하게 드러나며, 쿼리 로직이 복잡한 경우 중간 결과를 확인하기 쉬워 디버깅이 용이합니다.결국 SQL마다 데이터를 처리하는 방식과 상황에 맞게 선택하는 것이 중요합니다. 데이터 셋의 크기나 쿼리 작성의 편의성에 따라 어떤 방식이 유리할지는 상황에 따라 다를 것입니다.
이와 관련된 내용에 대해 좀 더 구체적인 예제와 설명이 필요하시다면, 과거 30일간 페이지별 조회수와 순페이지 조회수 구하기 이 URL에서 참고하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.