SELECT * FROM students s LEFT JOIN Friends f ON s.id = f.id 위에 코드랑 SELECT * FROM students s LEFT JOIN Friends f ON s.id = f.friend_id 아래 코드 두 개로 해봤는데요. 아직도 JOIN 뒤에 ON 조건을 쓰는 게 헷갈려요. 첫 번째 코드로 했을 때의 친구id랑 두 번째 코드로 했을 때의 친구id가 완전 달라지더라고요. 왜 그런건가요??
안녕하세요 강사님, 오늘부터 새로 강의를 듣게 되었는데 완강 목표로 열심히 듣겠습니다 ㅎㅎ 강의 초반 환경설정에서 ga_export.sql이 large text여서 Dbeaver에서 스크립트 실행할 때 j ava heap space 부족 에러 가 발생하더라고요. 이 때 터미널로 쉽게 불러올 수 있는 방법을 찾았고, 다른 수강생분들에게도 도움이 될 것 같아 공유드립니다. 아래 스샷처럼 터미널에서 sudo -iu postgres psql 입력 후 \i [ga_export.sql이 위치한 경로] 를 입력하면 쉽게 ga 데이터를 불러올 수 있습니다.
안녕하세요 184번을 풀다가 의문이 생겨서요 저는 LEFT JOIN을 통해서 답을 얻으려고 했는데 답이 나오진 않더라구요 LEFT JOIN 을 통해서 답을 구할 수 있는 방법은 없나요..? SELECT de.name as Department, em.name as Employee, em.Salary FROM employee as em LEFT JOIN department as de ON em.departmentId=de.id WHERE salary = (SELECT MAX(salary) FROM employee) LIMIT 3;
안녕하세요 제로초님. 항상 질 좋은 강의 감사합니다. offset 방식으로 pagination 구현 시 데이터가 누락될 수 있다는 단점을 설명해주시면서 soft delete 방식으로 구현 시에는 해당 이슈가 괜찮다고 설명해주셨는데요. soft delete 방식으로 구현 시에도 동일한 이슈가 발생할꺼라는 생각이 들어 질문을 남깁니다. soft delete 방식으로 구현 시에도 조회 쿼리를 날릴 때, deleteAt이 null인 값인 data들은 filter 되기 때문에 동일한 이슈가 발생할꺼 같은데 맞을까요? 추가로 삭제 연산을 soft delete 방식으로 구현 시, on delete option을 "casecade"로 설정했다면 부모 row가 삭제되었을 때, 자식 row도 soft delete 처리가 되나요? 아니면 set null 방식으로 처리가 되나요?
안녕하세요, 강의 잘 듣고 있습니다. 스칼라 서브쿼리를 성능문제로 지양해서 써야한다고 말씀하셨는데 혹시 더 구체적으로 알 수 있을지요? 스칼라 서브쿼리나 다른 서브쿼리나 어차피 메인 테이블을 하나씩 읽으면서 조건으로 달리 테이블을 처리하는건 같지 않나요? DB입장에서 혹시 실행계획을 세울 때 어떻게 차이가 날까요? 제대로 질문을 하였는지 잘 모르겠는데 답변 주시면 감사하겠습니다.
안녕하세요! 강사님 강의를 끝까지 다 수강하였습니다. 너무 도움이 많이 되었습니다. 감사합니다. 부동산 매물 강의에 대한 공지를 보고 메일로 문의 드렸는데 아직 피드백이 오지 않아 이렇게 질문글로 문의를 드리게 되었습니다! 메일 문의 한 번만 확인 부탁드립니다. 감사합니다!
채널별 고유/주문 사용자 건수와 매출 금액 및 비율 SQL로 구하기 2 를 학습하면서 /************************************ 채널별 고유 사용자 건수와 매출금액 및 비율, 주문 사용자 건수와 주문 매출 금액 및 비율 채널별로 고유 사용자 건수와 매출 금액을 구하고 고유 사용자 건수 대비 매출 금액 비율을 추출. 또한 고유 사용자 중에서 주문을 수행한 사용자 건수를 추출 후 주문 사용자 건수 대비 매출 금액 비율을 추출 *************************************/ with temp_01 as ( select a.sess_id, a.user_id, a.channel_grouping , b.order_id, b.order_time, c.product_id, c.prod_revenue from ga_sess a left join orders b on a.sess_id = b.sess_id left join order_items c on b.order_id = c.order_id where a.visit_stime >= (:current_date - interval '30 days') and a.visit_stime < :current_date ) select channel_grouping , sum(prod_revenue) as ch_amt -- 채널별 매출 --, count(distinct sess_id) as ch_sess_cnt -- 채널별 고유 세션 수 , count(distinct user_id) as ch_user_cnt -- 채널별 고유 사용자 수 --, count(distinct case when order_id is not null then sess_id end) as ch_ord_sess_cnt -- 채널별 주문 고유 세션수 , count(distinct case when order_id is not null then user_id end) as ch_ord_user_cnt -- 채널별 주문 고유 사용자수 --, sum(prod_revenue)/count(distinct sess_id) as ch_amt_per_sess -- 접속 세션별 주문 매출 금액 , sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액 -- 주문 세션별 매출 금액 --, sum(prod_revenue)/count(distinct case when order_id is not null then sess_id end) as ch_ord_amt_per_sess -- 주문 고유 사용자별 매출 금액 , sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user from temp_01 group by channel_grouping order by ch_user_cnt desc; 위 쿼리의 쿼리 뜻이 잘 이해가 안되어 질문 드립니다. , sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액 , sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user 이 두 항목은 각각 접속 고유 사용자별 주문 매출 금액, 주문 고유 사용자별 매출 금액이라 명칭 되어 있는데, 어떤 의미를 가지고 있는 것인지 잘 이해가 되지 않아 질문 드립니다. 접속 고유 사용자별 주문 매출 금액 : 사용자 대비 30일이내 매출 금액 주문 고유 사용자별 매출 금액 : 주문 대비 30일 이내 매출 금액 이렇게 이해를 하면 될런지요?
사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL로 구하기 - 02 위 과정을 학습하고 있습니다 select month ,case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end as gubun , count(*) as user_cnt from temp_01 group by month, case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end order by 1, 2; 위 쿼리에서 group by 항목이 이해가 잘 안되서 질문 드립니다. 위와 같이 그룹을 지으면 일자 + monthly_user_cnt 의 조합으로 그룹들이 만들어짐 select에서 select month ,case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end as gubun 위 쿼리로 넘어온 데이터(아직 컬럼으로 만들어지지 않은채 각 그룹별로 정의되어 넘어온 데이터)에 컬럼명을 붙여줌 위와 같은 동작을 하는게 맞는지요? 제가 이해하는게 맞는지 알고 싶습니다.
-조인에 대한 개념이 약간 헤깔려서 문의드립니다. -저는 아래와 같이 left outer join시에 senior_manger/MANGER/employee 테이블과의 조인 조건을 아래와 같이 상위의 CODE를 equal 조건으로 넣어야 정확히 일치하는 ROW를 조인할수 있는게 아닌지요? LEFT OUTER JOIN Lead_Manager LM ON ( C.COMPANY _CODE=LM.COMPANY_CODE) LEFT OUTER JOIN Senior_Manager SM ON ( LM.COMPANY _CODE=SM.COMPANY_CODE AND LM.LEAD_MANAGER_CODE=SM.LEAD_MANAGER_CODE) LEFT OUTER JOIN Manager M ON ( SM.COMPANY _CODE=M.COMPANY_CODE AND SM.LEAD_MANAGER_CODE=M.LEAD_MANAGER_CODE AND SM.SENIOR_MANAGER_CODE=M.SENIOR_MANAGER_CODE) LEFT OUTER JOIN Employee E ON ( M.COMPANY _CODE=E.COMPANY_CODE AND M.LEAD_MANAGER_CODE=E.LEAD_MANAGER_CODE AND M.SENIOR_MANAGER_CODE=E.SENIOR_MANAGER_CODE AND M.MANAGER_CODE=E.MANAGER_CODE)
안녕하세요 ! order by 해커랭크 문제풀이 2 강의에서 select name from students where marks > 75 order by right (name,3) and ID 이렇게 order by에서 컴마 대신에 and를 썼는데 둘의 차이가 무엇인가여? 감사합니다