작성
·
134
0
세션 4에서 order별 cross selling을 진행할 때 상품별로 함께 주문된 상품의 건수를 count한 후 order by desc를 통해 건수가 가장 많은 순으로 순위추출을 하는 과정과 관련하여 질문이 있습니다.
함께 주문한 건수가 동일한 경우 실무적으로는 두 데이터 모두를 가지고 있는지, 혹은 부가적인 분석 과정을 거쳐 한 개의 데이터만을 가지고 있는지 여쭤보고싶습니다.
강의의 코드에 따르면 단순 order by를 하는데, A의 경우 AC와 AD가 동일한 건수로 구매되었지만 order by의 과정에서 AC가 우선시 되었지만 반대로 BA와 BD의 경우 BD가 우선시되는 것을 확인할 수 있었습니다. cnt를 기준으로 order by를 할 때 cnt가 동일한 경우 이후 상품명으로 order by를 하게 되는지, 혹은 랜덤하게 결과가 도출되는 것인지 여쭤보고싶습니다.
감사합니다 :)
답변 1
0
안녕하십니까,
질문이 주문별 고객별 연관 상품 추출 SQL로 구하기 - 01 강의에서의 SQL을 의미하시는 건지요?
그리고 order by가 row_number() ( .... order by cnt )를 의미하는 건지요?
만약 그렇다면,
함께 주문한 건수가 동일한 경우 실무적으로는 두 데이터 모두를 가지고 있는지, 혹은 부가적인 분석 과정을 거쳐 한 개의 데이터만을 가지고 있는지 여쭤보고싶습니다.
=> 보통은 업무에서 가장 많이 같이 주문된 상품보다는 가장 많이 주문된 순서로 N개의 상품으로 적용하는 경우가 더 많습니다. 조금 더 SQL을 상대적으로 쉽게 표현하기 위해서 가장 많은 것만 추출한 것이고 Top 3를 추출하려면 where 조건에서 rnum <=3 이라고 하면 됩니다.
강의의 코드에 따르면 단순 order by를 하는데, A의 경우 AC와 AD가 동일한 건수로 구매되었지만 order by의 과정에서 AC가 우선시 되었지만 반대로 BA와 BD의 경우 BD가 우선시되는 것을 확인할 수 있었습니다. cnt를 기준으로 order by를 할 때 cnt가 동일한 경우 이후 상품명으로 order by를 하게 되는지, 혹은 랜덤하게 결과가 도출되는 것인지 여쭤보고싶습니다.
=> row_number() over (... order by cnt)에서 cnt가 동수 일때 어떤것을 선택하는지에 대한 로직은 각 DBMS 별로 다를 수 있으며, random과 같다고 보시면 됩니다.
감사합니다.
답변 감사드립니다 :)