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번이나 둘다 큰 의미가 없는건지 궁금합니다.
주문 서비스 개발 부분 강의를 듣다가 궁금한 점이 있어 질문드립니다. 주문 취소(OrderService.cancelOrder) 부분에서order.cancel() 만 작성하면 JPA 특징으로 인해, 데이터 업데이트 관련 쿼리 로직 없이 자동으로 업데이트 된다고 하셨는데요. 주문 생성(OrderService.order)의 EntityManager 가 사용된 orderRepository.save (order); 와 혼동이 와서 질문 남깁니다. 주문 취소 order.cancel() 메서드를 타면서 엔티티의 값(status, count 등) 변경 내역이 자동으로 업데이트 되는 것이라고 하면, 주문 생성도 Order.createOrder(member, delivery, orderItem); 를 타면서 엔티티의 값들을 설정하기 때문에 orderRepository.save (order); 를 사용하지 않아도 되는게 아닌가 라는 생각이 듭니다. 제가 JPA 를 잘 몰라서 혼란이 오는 것 같은데.. 쿼리는 직접 작성하지 않아도 업데이트/저장/삭제 등 DB 조작이 일어나려면 EntityManager 를 통해야 된다고 생각하고 있었습니다. 주문 취소는 EntityManager 없이 업데이트 되고, 주문 생성은 EntityManager의 persist() 를 사용해서 저장하는 것 이 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이어도 되는걸로 바뀌는 건가요? 이처럼 변경할 컬럼 타입에 원래 컬럼에 있던 타입에 관련된 것을 안써주면 리셋되는 건가요?
안녕하세요. where 조건을 동적으로 생성해주는 부분에 대해서는 충분히 이해가 되었습니다. 그런데 혹시 특정 condition 값에 따라 join을 해줘야하는 테이블이 다른 경우라면 어떻게 처리되어야 할지 모르겠어서 글을 남기게 되었습니다. condition조건에 teamName이 있을 때만 team을 조인해주고 싶은데 join 구문을 동적으로 처리할 수 있는 좋은 방법이 어떤 것인지 질문드립니다. 😭 감사합니다.
Analyric을 사용할때 많은 데이터나 필요한 함수가 많아지면 서브쿼리나 with절을 많이 사용해야할거같은데 데이터가 많아지면 복잡한 쿼리를 작성할때 부담스러울거같다는 생각이 들더라구요 차라리 필요한 데이터만 가지고 엑셀로 작업하는게 더 빠르고 엑셀이 가진 GUI를 활용하는게 나을거같다는 생각도 들더라구요 그런데 DB만 검색해봐도 윈도우 함수는 공부하는게 좋다, 이런 이야기가 많은데 그 장점이 뭔지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 수정, 삭제 벌크 연산의 6:20 부분에서 update쿼리로 인한 영속성컨텍스트 문제를 설명해주셨는데요. 전 강의에서 em.flush()실행되는 조건들을 설명해주실 때, 직접 호출 시 트랜잭션 커밋 시 JPQL쿼리 실행 시 em.flush()가 실행된다고 설명해주신 것으로 기억하고 있습니다. querydsl도 결국 JPQL기반으로 작동된다고 알고 있는데, querydsl을 통한 select쿼리 실행을 하면 자동으로 em.flush()가 실행되지 않고, 직접 해주어야 하는 메커니즘이 궁금합니다!