55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결데이터 분석 SQL Fundamentals
Outer join 질문
안녕하세요, 강의 잘 듣던 중 궁금한 점이 생겨 질문 남깁니다.Outer join 실습 - 02에서-- orders_items에 주문번호(order_id)가 없는 order_id를 가진 orders 데이터 찾기select *from nw.orders aleft join nw.order_items b on a.order_id = b.order_id;where b.order_id is null; 여기서 만약 결과값이 있는 데이터였다고 가정할때is null이 쓰인 where 절에서 a.order_id로 쓰면 원하는 결과값이 나오지 않는 게 맞나요?
- 미해결데이터 분석 SQL Fundamentals
where절 단일 연산자
select *from nw.orders awhere a.order_date = (select min(order_date) from nw.orders x where x.customer_id = a.customer_id);이 쿼리가 실행되는 이유는 서브쿼리로 전달되는 메인쿼리의 레코드에 대한 결과가 한 건만 나와서 가능한게 맞나요?
- 해결됨데이터 분석 SQL Fundamentals
그룹핑 후 상태?
-- max, min 함수는 숫자열 뿐만 아니라, 문자열,날짜/시간 타입에도 적용가능.select deptno, max(job), min(ename), max(hiredate), min(hiredate) --, sum(ename) --, avg(ename)from hr.empgroup by deptno;deptno 컬럼으로 그룹핑한 후 max(job)을 해서 나오는 컬럼값은 그룹에서 어떤 기준으로 나오는 건가요?
- 해결됨데이터 분석 SQL Fundamentals
후속강의 관련하여 질문드립니다.
안녕하세요.강의 잘 듣고 있습니다.데이터 분석쪽으로 취업예정은 아니지만 개발자로써 sql작성 능력 향상 면에서 후속강의를 들어도 괜찮을까요?
- 해결됨데이터 분석 SQL Fundamentals
having 절과 where 절에서 상관서브쿼리 질문있습니다.
강사님 , 항상 답변 감사합니다 (__)having 절, group by 절에 상관 서브쿼리를 사용하지 않는게 좋다고 하셨습니다. 다시 생각을 해보니WHERE 절에 상관 서브쿼리가 있다면메인 쿼리에 로우 하나씩 상관 서브쿼리로 전달을 해서상관 서브쿼리가 연산을 하는 것과 HAVING 절도 GROUP BY로 만들어진 결과를 로우 하나씩 상관 서브쿼리로 연산을 하는 것은 제가 생각하기에는 동일한 방식인거 같은데having, group by 절에는 사용을 하지 말라고 하신지 궁금합니다.
- 미해결데이터 분석 SQL Fundamentals
Outer 조인 1:n 관계 방향이 궁금합니다
안녕하세요 강사님의 강의에 큰 도움을 받고 있는 초보 SQL 유저입니다 문제를 풀다 궁금한 점이 생겼습니다해당 문제의 경우 왼쪽이 customers (부모) 오른쪽 orders(자식) 관계인데 요구 조건 마다 다르겠지만 outer 조인 할 때, Null 쪽이 M 쪽을 넣는 것이 더 자주 사용될거 같은데 혹시 저의 생각이 맞을까요?과거에 조인절이 많아져 행과 열이 늘어나면 쿼리 처리속도가 늘어난다는 얘기를 들었습니다 그래서 서브쿼리로만 풀 수 있는 쿼리는 조인문을 안 쓰는 것이 더 낫지 않나라 생각 드는데 혹시 맞을까요? -- 주문이 단 한번도 없는 고객 정보 구하기.select *from customers cleft join orders o on (o.customer_id = c.customer_id)where o.customer_id is null select *from customers cwhere customer_id not in (select customer_idfrom orders)
- 해결됨데이터 분석 SQL Fundamentals
강사님 with 와 서브쿼리에 대해 질문이 있습니다.
with temp_01 as ( select avg(sal) as emp_avg from emp ) select deptno ,avg(sal) from emp group by deptno having avg(sal) > (select emp_avg from temp_01); -- 전체 평균 급여보다 부서평균 급여가 높은 부서 번호를 출력하세요 having에서 조건을 비교하는 방식을 사용한다고 한다면강사님께서는 having에 서브쿼리를 사용하게 되면 ,그 서브쿼리를 매번 실행하다보니 추천을 하지 않는다고 하셨는데 여기서 with로 임시 테이블을 지정하면이미 재사용하기 편하기 위해서 temp_01로 만들어서 사용하면임시 서브쿼리 테이블을 사용하니까 비상관 서브쿼리를 날리는 거보다 좀 더 나은 걸까요?
- 해결됨데이터 분석 SQL Fundamentals
강사님 조건에 하나일때와 두개 일때가 차이가 있더라구요
제가 작성한 SQLselect * from nw.orders o where o.order_id in ( select max(order_id) from nw.orders a group by a.customer_id );강사님이 작성한 SQLselect * from nw.orders where (customer_id, order_date) in (select customer_id, max(order_date) from nw.orders group by customer_id);강사님 서브쿼리 강의 추가해주셔서 감사합니다.제 기억에는 강사님께서 IN 연산자로 사용할 경우 세미 조인처럼 연결된다고 하셨던거 같은데 실행을 해보니까 조건이 하나 일때에는 세미 조인이지만 조건이 2개가 되니까 해쉬 조인으로 바뀌더라구요 그 이유가 궁금합니다.
- 해결됨데이터 분석 SQL Fundamentals
강사님 group by에서 궁금한게 있습니다.
with temp_01 as ( select b.category_id, b.category_name as category_name , percentile_disc(0.25) within group (order by unit_price) as qt_1 , percentile_disc(0.5) within group (order by unit_price) as qt_2 , percentile_disc(0.75) within group (order by unit_price) as qt_3 , percentile_disc(1.0) within group (order by unit_price) as qt_4 from nw.products a join nw.categories b on a.category_id = b.category_id group by b.category_id ) select * from temp_01;2번with temp_01 as ( select a.category_id, max(b.category_name) as category_name , percentile_disc(0.25) within group (order by unit_price) as qt_1 , percentile_disc(0.5) within group (order by unit_price) as qt_2 , percentile_disc(0.75) within group (order by unit_price) as qt_3 , percentile_disc(1.0) within group (order by unit_price) as qt_4 from nw.products a join nw.categories b on a.category_id = b.category_id group by a.category_id ) select * from temp_01;2번은 강사님이 작성하신 코드입니다.1번처럼 작성하지 않으시고 2번으로 작성하신 이유가 따로 있으신가요 ?인덱스가 중복되는게 있으면 효율이 안좋아서fk인 a.category를 사용하는게 더 좋아서 선택하신건지 아니면 1번이나 2번이나 둘다 큰 의미가 없는건지 궁금합니다.
- 미해결데이터 분석 SQL Fundamentals
수업 장표 다운로드
안녕하세요.강의 영상에 나오는 학습 자료(ppt 장표)는 어디에서 다운받을 수 있을까요?감사합니다!
- 해결됨데이터 분석 SQL Fundamentals
강사님 analytic 집계함수 에 대해서 궁금한게 있습니다.
select empno, ename, deptno, sal, avg(sal) over (partition by deptno) dept_avg_sal , sal - avg(sal) over (partition by deptno) dept_avg_sal_diff from hr.emp;위 SQL은 강사님이 작성해주신 코드 입니다.with temp_01 as ( select empno ,ename ,sal as "개인 급여" ,avg(sal) over (partition by deptno) as "평균 급여" from emp ) select empno,ename,"개인 급여","평균 급여",abs("평균 급여"-"개인 급여") from temp_01;밑에는 제가 답안지를 안보고 먼저 작성한 코드 입니다. 제가 처음에 첫번째 코드처럼 작성을 하려다가 이게 group by 처럼 부하가 좀 큰 작업이라고 생각이되었습니다.그래서 한번만 사용하고 싶어서 임시테이블을 만들고그 테이블의 컬럼끼리 계산을 하게 했는데 윈도우 함수를 한번 더 사용하는것과 서브쿼리로 한번만 호출하는 것 중에서 윈도우 함수를 한번 더 호출하는게 더 나은 선택이라면 그 이유가 궁금합니다.만약에 서브 쿼리를 사용하는데 그 서브 쿼리에 함수를 사용한 컬럼이 있다면그 컬럼을 호출할때마다 그 함수를 실행해서 그 결과를 가져오나요?아니면 한번 서브쿼리를 실행하면 그 데이터가 저장되서 값만 가져오나요?
- 해결됨데이터 분석 SQL Fundamentals
강사님 Analytic을 사용하는 이유가 뭔가요?
Analyric을 사용할때 많은 데이터나 필요한 함수가 많아지면 서브쿼리나 with절을 많이 사용해야할거같은데 데이터가 많아지면 복잡한 쿼리를 작성할때 부담스러울거같다는 생각이 들더라구요차라리 필요한 데이터만 가지고 엑셀로 작업하는게 더 빠르고 엑셀이 가진 GUI를 활용하는게 나을거같다는 생각도 들더라구요 그런데 DB만 검색해봐도 윈도우 함수는 공부하는게 좋다, 이런 이야기가 많은데 그 장점이 뭔지 궁금합니다.
- 해결됨데이터 분석 SQL Fundamentals
강사님 Group By 실습 - 01 질문 있습니다
with : https://www.inflearn.com/questions/542285 강사님께서 with 절을 사용하시는 이유는 수강생이 SQL 진행 순서를 보여주기 위해서 사용하신다고 하셨는데강사님께서는 실무에서 with을 주로 어떤 용도로 사용하시는지 궁금합니다 그리고select a.dname , round(avg(c.sal),0) as "부서별 평균 급여" from dept a join emp b on a.deptno = b.deptno and a.dname in ('SALES','RESEARCH') left join emp_salary_hist c on b.empno = c.empno group by a.dname ;-- 강사님께서 작성하신 코드 select a.deptno, max(a.dname) as dname, avg(c.sal) as avg_sal, count(*) as cnt from hr.dept a join hr.emp b on a.deptno = b.deptno join hr.emp_salary_hist c on b.empno = c.empno where a.dname in('SALES', 'RESEARCH') group by a.deptno order by 1;저는 where에 조건을 넣지 않고 and에 조건을 넣었습니다.그이유는 dname에 인덱스가 없기때문에 where에 조건을 추가하면테이블을 조인한 후에 필터링을 하고 Group by를 진행하게 되는 것보다join on and 에 조건을 넣으면 조건에 만족하는 데이터만 가지고 조인을 하기때문에조금이라도 조인 성능이 좋아지지 않을까 생각했습니다.아니면 join 조건도 인덱스가 없으면 where 절과 똑같이 조건 스캔을 먼저 하냐 뒤에 하냐 차이일 뿐인가요 ?
- 해결됨데이터 분석 SQL Fundamentals
강사님 with 절을 사용하시는 이유가 궁금합니다.
강사님께서 with절을 꾸준히 보여주시는 이유가 있을거라 생각해서찾아보니 장점도 있지만 단점도 있더라구요with를 사용하면 임시테이블을 만들기 때문에장점은 재귀 사용이 가능하고, 반복 사용이 가능하다.단점은 불필요한 코드가 들어가서 가독성이 나빠질수 있고임시 테이블을 만들기 때문에 성능에 영향을 줄수있다고 적혀있더라구요 강사님께서는 with를 꾸준히 보여주시는 이유가 궁금합니다.select a.dname , round(avg(c.sal),0) as "부서별 평균 급여" from dept a join emp b on a.deptno = b.deptno and a.dname in ('SALES','RESEARCH') left join emp_salary_hist c on b.empno = c.empno group by a.dname ;저는 and에 부서명 조건을 추가했습니다.그 이유는 dept.dname에 인덱스가 없고where에 dname을 넣으면 조인후에 필터가 되기때문에 join 조건에 추가하면 조인할때 데이터를 조금 더 줄인 상태에서 실행한다고 이해를 했습니다.제가 잘못 이해를 하고 있는 걸까요?조인 할때 and 조건도 마찬가지로 인덱스가 없다면 큰 상관이 없는건가요 ?
- 해결됨데이터 분석 SQL Fundamentals
Non Equi 조인과 Cross 조인 실습 질문있습니다.
select * from emp_salary_hist a join emp_dept_hist b on a.empno = b.empno and a.fromdate between b.fromdate and b.todate ; select * from emp_salary_hist a join emp_dept_hist b on a.empno = b.empno where a.fromdate between b.fromdate and b.todate ; 12:29에서 where 보다 and로 연산 했을때join의 양을 확 줄여줘서 where 절로 했을때보다속도가 빠르다고 말씀해주셨습니다. 이해가 안되는 부분이 있습니다.where에서 조건을 걸어 필터링된 결과에서 join을 할텐데 on ~ and 로 하는게 더 빠른게 연산되는 이유가 궁금합니다. where에서 인덱스가 있을경우 해당 값을 풀스캔하지 않고 index에서 걸러진 데이터만 가지고 join을 실행하는걸로 이해하고 있습니다.지금 where a.fromdate와 b.fromdate는 인덱스가 있고 b.todate는 인덱스가 없는데a.fromdate 와 b.fromdate를 비교할때는 인덱스를 사용하고a.fromdate 와 b.todate를 비교할때에는 풀 스캔이 되는건가요?만약에 반대로 a.fromdate는 인덱스가 없고b.fromdate만 인덱스가 있다면 이것도 풀스캔이 되는 건가요?
- 해결됨데이터 분석 SQL Fundamentals
조인 실습-01 추가 질문이 있습니다.
강사님 좋은 강의 감사합니다 ! (__)다름이 아니라 답변을 보는 와중에제가 이해한 내용이 강사님께서 말씀하신 의도가 맞는지 궁금해서 입니다.https://www.inflearn.com/questions/594471/%EA%B0%95%EC%82%AC%EB%8B%98-%EB%8B%A4%EC%A4%91-%EC%A1%B0%EC%9D%B8-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4마지막 줄에 작성해주신여러개의 테이블로 조인할 경우에는 조인key에 따라 조인시 만들어 지는 집합의 레벨을 순차적으로 생각해 줘야 합니다. 이 뜻이다중으로 테이블을 조인을 할때emp 1 join emp_salary_hist M => emp_salary_hist 레벨의 조인 결과-> emp_salary_hist M : dept 1 => emp_salary_hist 레벨의 조인 결과이렇게 1 : M -> M : 1 - > M 이렇게 조인을 하는게 아니라1: M -> 1 :M -> M 으로 조인을 하라는 말씀이신건가요 ? 추가 질문으로 M 집합의 크기가 큰게 뒤로 가는게 더 좋은 SQL이라고 할수있을까요?그리고 이렇게 코드를 작성해야하는 이유도 궁금합니다.
- 미해결데이터 분석 SQL Fundamentals
조인실습03.질문
강사님! 안녕하세요. 수강하다가 질문이 생겨서 질문드립니다! 섹션1. 조인실습03에 다른건 다 이해가 되는데 join nw.shippers d on b.ship_via = d.shipper_id 여기서 shippers table과 orders 테이블이 shipper id = ship via로 조인시키는 부분이 이해가 안 됩니다ㅜㅜ 왜 두 컬럼으로 조인을 시켜 주는 것일까요??? shipper id가 shipper table에 고유칼럼인건 이해했습니다!
- 미해결데이터 분석 SQL Fundamentals
Partition by 컬럼 2개 설정에 대한 질문입니다.
안녕하세요 강사님 너무 재밌게 강의를 듣고 있는 수강자 입니다.이번 집계 Anlaystic SQL 를 실습하다가 한가지 궁금한게 있어서요. with절을 사용하지 않고, 한번에 조회를 해보고 싶어서 해봤는데.. 뜻대로 잘 안되네요 ㅠㅠ [퀴리문]-- 직원별 개별 상품 매출액, 직원별 가장 높은 상품 매출액을 구하고, 직원별로 가장 높은 매출을 올리는 상품의 매출 금액 대비 개별 상품 매출 비율 구하기select o.employee_id as eId,p.product_id, p.product_name, sum(oi.amount)over(partition by o.employee_id, p.product_id)from nw.orders ojoin nw.order_items oi on o.order_id = oi.order_idjoin nw.products p on oi.product_id = p.product_idorder by 1;이렇게 partition by 에 컬럼을 2개 이상으로 하면, 제 생각에는 2개가 group by 처럼 진행 되는 걸로 생각했는데 안되더라고요 ㅠㅠ [결과 값]이런 결과 값이 중복으로 나오는데.. 혹시 이러한 이유를 알려주실 수 있나용 ㅠ_ㅠ
- 미해결데이터 분석 SQL Fundamentals
질문있습니다!
안녕하세요! 정말 좋은강의 해주셔서 감사합니다. 다른 일을 하다가 데이터 분야에 재미를 느끼고 sql부터 공부하고 있습니다.다름아니라, 제 블로그에 강의 수강 후 내용정리 및 코드를 복습 겸 TIL 문서로 올리고 싶은데, 혹시 가능할까요?코드 파일이나 PPT 파일을 올리는 건 아니고, 수업 내용을 제가 재정리한 내용과 예제 코드정도만 게시하고 싶습니다.출처는 꼭 남기겠습니다.
- 해결됨데이터 분석 SQL Fundamentals
실습코드 안열릴 경우
앞부분 다 잘 따라왔고, 조인실습01 진행 중입니다. 실습 코드가 안열릴때 어떻게 진행하면 될까요?! 확인 부탁드립니다. 감사합니다.