제가 작성한 SQL select * from nw.orders o where o.order_id in ( select max(order_id) from nw.orders a group by a.customer_id ); 강사님이 작성한 SQL select * from nw.orders where (customer_id, order_date) in (select customer_id, max(order_date) from nw.orders group by customer_id); 강사님 서브쿼리 강의 추가해주셔서 감사합니다. 제 기억에는 강사님께서 IN 연산자로 사용할 경우 세미 조인처럼 연결된다고 하셨던거 같은데 실행을 해보니까 조건이 하나 일때에는 세미 조인이지만 조건이 2개가 되니까 해쉬 조인으로 바뀌더라구요 그 이유가 궁금합니다.
안녕하세요. 개인 사정으로 강좌를 듣지 못하다가, 다시 들으려니, 도저히 기한네 (6/29) 마칠 자신이 없어 부득불 1달 정 도 연장을 부탁드렸으면 합니다. "SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법" "SQL Server 컨설턴트가 알려주는, 쿼리 능력 레벨업(고급 T-SQL 쿼리)" 번거롭게 해드려서 죄송하다는 말씀과 함께, 부탁을 드립니다. 감사합니다.
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번이나 둘다 큰 의미가 없는건지 궁금합니다.
데이터 분석을 위한 환경 구축 (업데이트) 4:27 data import 덤프기능을 사용하는 이유가 궁금합니다 이전에 배웠던대로 student.sql파일로 실행할때처럼 file->open sql.script->student.sql 이런 방식과 차이점이 어떤것인가요? 그리고 create database bestproducts; 를 하기 전 오류가 뜨는 이유와 치면 오류가 왜 사라지는지 궁금합니다
[연습] 실제 데이터 기반, 데이터베이스 직접 만들어보기1 11:55 데이터타입 varchar text 차이가 궁금합니다 ' 그리고 강의내에서 varchar의 경우 int와 달라서 auto_increment를 사용할수없다고 하셨는데 auto_increment는 숫자에만 가능해서 그런건가요?
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로 테이블 변경하기 11:34 alter table에서 변경할 컬럼 타입을 넣을때 not null을 안써주면 원래 not null이었으면 null이어도 되는걸로 바뀌는 건가요? 이처럼 변경할 컬럼 타입에 원래 컬럼에 있던 타입에 관련된 것을 안써주면 리셋되는 건가요?
Analyric을 사용할때 많은 데이터나 필요한 함수가 많아지면 서브쿼리나 with절을 많이 사용해야할거같은데 데이터가 많아지면 복잡한 쿼리를 작성할때 부담스러울거같다는 생각이 들더라구요 차라리 필요한 데이터만 가지고 엑셀로 작업하는게 더 빠르고 엑셀이 가진 GUI를 활용하는게 나을거같다는 생각도 들더라구요 그런데 DB만 검색해봐도 윈도우 함수는 공부하는게 좋다, 이런 이야기가 많은데 그 장점이 뭔지 궁금합니다.