선생님 비상관 subquery에서 table 명을 지정해주어야 하는 이유가 꼭 있을까요? 선생님 코드는 from hr.emp_dept_hist_01 x 라고 지정해주셨었는데, select * from hr.emp_dept_hist_01 where (empno, todate) in (select empno, max(todate) as todate from hr.emp_dept_hist_01 x group by empno) ; 비상관이면 없어도 되지 않을까하는 생각을 했습니다. select * from hr.emp_dept_hist_01 where (empno, todate) in (select empno, max(todate) as todate from hr.emp_dept_hist_01 group by empno) ;
안녕하세요, 선생님. 하루에 한번은 질문을 드리는거 같은데 자세하게 답변주셔서 항상 감사드립니다. -- 고객이 가장 최근에 주문한 주문 정보 추출 를 아래와 같이 풀어도 결과값은 같더라구요. select * from nw.orders a where order_date in (select max(b.order_date) from nw.orders b where b.customer_id =a.customer_id ); (아래는 예제 코드) select * from nw.orders where (customer_id, order_date) in (select customer_id, max(order_date) from nw.orders group by customer_id); where...in 은 비상관쿼리의 다중행, where existx (...)은 상관쿼리의 다중행 반환에 사용된다는 것을 배웠기 때문에 저렇게 하면 안되는 거 같은데 왜 안될까 궁금합니다.
안녕하세요 선생님. 프로그램 설치부터 난항을 겪고 있습니다. ㅠㅠ SSMS 설치까지 거의 완료 한 후에 암호를 입력하고 로그인 하는 과정에서 오류가 발생했습니다. 233 오류였던걸로 기억합니다. 그래서 암호를 잘못 기억하고 있나 하고 여러번 시도를 했지만 모두 실패했습니다. 결국 프로그램을 모두 삭제하고 재설치하기로 결정하고 실행 했습니다만, 이번에는 SQLEXPR을 설치하는 초반부에 컴퓨터 재실행을 실패함으로써 설치가 더이상 진행되지 않았습니다. 구글에 검색해본 결과 레지스트리 편집기에서 PendingFileRenameOperations 키를 백업한 후 삭제하라는 것을 봤고 이름은 조금 다른 FileRenameOperations 였나 그걸 삭제했던 것 같습니다. 그리고 다시 시도했지만 또 실패했습니다. 재부팅도 해봤지만요. 이번에는 프로그램 추가/제거로 가서 sql에 관련된 걸 모두 다 삭제하려 했으나 다른 항목들은 모두 삭제가 됐지만, Microsoft SQL Server 2012 Setup (Englinsh) 는 삭제 된 것처럼 나오다가 사라지지 않고 그대로 있는 상태입니다. 그리고 Microsoft SQL Server 2012(64비트)는 이전과 같이 컴퓨터 재실행 부분 오류로 제거를 선택하고 진행했음에도 성공적으로 제거되지 않았습니다. 이 문제를 어떻게 해결할 수 있을까요 ㅠㅠ
안녕하세요, 선생님 항상 친절하고 자세한 답변 감사드립니다. 강의 자료 중 select * from hr.emp_salary_hist a where todate = ( select max (todate) from hr.emp_salary_hist x where a.empno = x.empno); 여기서 where a.empno = x.empno 이 부분은 왜 필요한건가요? select * from hr.emp_salary_hist where todate = ( select max (todate) from hr.emp_salary_hist ) ; 이것도 결과는 같기도 하고 같은 데이터에서 값을 찾는거라 굳이 where a.empno = x.empno 이 왜 필요한지 잘 모르겠습니다. 감사합니다.
실습코드 'first_value_last_value_Analytic_실습'의 마지막 "-- 연속된 데이터 흐름에서 값이 Null일 경우 바로 값이 있는 바로 위의 데이터를 가져 오기." 와 관련된 질문입니다(아마도 실습코드는 있는데 본 강의에서는 다루지 않으신 듯합니다). (예제코드) temp_04 as ( select * , max(lpad(rnum::text, 6, '0')||daily_sum) over (order by ord_date rows between unbounded preceding and current row) as temp_str from temp_03 order by ord_date ) dayily_sum자체를 일정한 자리수로 padding을 해주고 난 뒤 처리해도 되지 않을까 생각해봤습니다. temp_04 as ( select * , max(lpad(rnum::text, 6, '0')||lpad((daily_sum)::text,6, '0' )) over (order by ord_date rows between unbounded preceding and current row) as temp_str from temp_03 order by ord_date ) 이렇게 해서 처리해도 될까요?
select product_id, product_name , unit_price, round ( sum (unit_price) over ( order by unit_price),2) as unit_sum from products ; 실행시 "SQL Error [42883]: 오류: round(real, integer) 이름의 함수가 없음" sum (unit_price) over ( order by unit_price)의 자료형이 real인 것은 확인이 되는데 왜 에러가 나는걸까요?
안녕하세요 선생님, 강의 너무 재밌게 복습하고 있는 수강생입니다. 질문이 있어서 글을 씁니다. " 스칼라 서브쿼리 실습 - 01 " 강의 07:10 에서 아래 쿼리에 문제가 있다고 알려주십니다. select a.*, (select avg(sal) from hr.emp x where x.deptno = a.deptno) dept_avg_sal from hr.emp a; 그리고 그 과정에서 M:N join 결과물을 예로 들어서 왜 그런 지를 알려주시는데요, 여기서 의문이 생겼습니다. "스칼라 서브쿼리 실습 - 01 " 바로 이전 강의에서 스칼라 서브 쿼리는 메인 쿼리의 각 레코드 별로 연산이 수행된다 는 걸로 기억합니다. 그 말은... (select avg(sal) from hr.emp x where x.deptno = a.deptno) 위 스칼라 서브쿼리가 hr.emp 테이블의 각 레코드 별로 연산이 수행된다는 걸로 전 이해합니다. 그런데 07:10 때는 이걸 조인의 결과물로 설명하시면서 좋지 않은 쿼리라고 알려주십니다. 각 레코드 별로 연산을 수행한다고 생각하면 사실 저 서브쿼리가 잘못된 쿼리 같지가 않다고 저는 생각하는데, 그게 아닌가요? 조인을 통해서 스칼라 서브쿼리를 좋은지 아닌지를 판단해야 되는 건가요??
안녕하세요. 강사님. 평소 궁금하고 잘 안됬던 부분들을 학습할 수 있어서 열심히 수강중입니다. 기초적인 질문이나 개념을 잡기 위해 문의드립니다. select to_date ('2022-01-01', 'yyyy-mm-dd'); select to_date ('2022-01-01', 'yyyy/mm/dd'); select to_date ('2022/01/01', 'yyyy/mm/dd'); select to_date ('2022/01/01', 'yyyy-mm-dd'); 위 네가지 모두 결과값으로는 to_date 2022-01-01 로 나오던데요. to_date() 라는 것은 구성에 대한 부분일 뿐 date에 대한 db관리나 출력시의 포맷과는 무관한 것인가요??
집계 Analytic SQL에서 rows between unbounded preceding and current row 관련 질문 드립니다. sum (amount) over ( partition by order_id order by line_prod_seq) as cum_sum_by_orderid sum (amount) over ( partition by order_id rows between unbounded preceding and current row ) as cum_sum_by_orderid2 1의 경우와 2의 경우가 값이 같은데 partition이 되어 있고 윈도우 설정이 어차피 상위 row에서 부터 누적되는 값이라면 'order by line_prod_seq'이 없어도 되지 않나 하는 생각이 듭니다. 그럼에도 불구하고 'order by line_prod_seq'을 굳이 명시해줘야 하는 이유가 있을까요? 어떤 데이터의 경우 이 부분이 없으면 문제가 생길 수 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. order_date에서 년, 월, 일을 to_char로 추출하셨는데 date_part와의 결과는 동일하더라구요. 두 명령어의 차이가 무엇인가요? ㅍ
기존 문의사항 보고 작성해주신 답편대로 다 따라햇는데 ga_export 용량이 커서 스크립트 업로드가안돼요 DBEAVER 용량을 20,000M 이상으로 키울 경우 DBEAVER 실행이안돼요.. 텍스트 에디터 사용하여 복+붙해도 용량이 크다고안됩니다. 해결방법 알려주세요ㅠㅠㅠ
timestamp 연산을 하다가 이상한 점을 발견했습니다. select to_timestamp (' 2024-01-01 01:00:00 ', 'yyyy-dd-mm hh24:mi:ss')- to_timestamp (' 2023-01-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss') as diff_timestamp; result diff_timestamp 365 days 01:00:00 그런데 select to_timestamp (' 2024-01-11 01:00:00 ', 'yyyy-dd-mm hh24:mi:ss')- to_timestamp (' 2023-01-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss') as diff_timestamp; result diff_timestamp 670 days 가 됩니다. timestamp 두번째의 경우 670일이라고 결과값을 나왔습니다, 375일이 맞는 답인데 말입니다. 제가 뭐를 놓친걸까요?
안녕하세요, 선생님! 좋은 강의 정말 잘 듣고 있습니다. 유익한 강의 내용을 천천히 정리하면서 제 지식으로 만들고 싶었는데, 최근 개인적인 사정으로 바쁘다보니 강의 종료일이 금방 도래하게 되었습니다.. 혹시라도 1개월 정도 강의 연장이 가능하다면, 좀 더 깊게 학습할 수 있는 기회가 될 것 같아 문의드립니다. 감사합니다.
선생님 안녕하세요. SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법 수강 중에 있습니다. 최근 3개월동안 프로젝트에 투입되느라 강의를 들을 시간이 부족했는데 3/31에 종료예정이라 시간이 조금 촉박하게 되었습니다.. 혹시 가능하신 경우 한달 정도 강의를 연장해주신다면 꼭 끝까지 듣고 완강하고 싶습니다.!
과목별 평균 시험절수 얼마? 문제 2번 풀이 하실 때 서브쿼리를 사용하셨는데 조인문으로 해도 결과는 동일하게 나오는데 select courses.title as 과목명 , round(avg(grades.exam_score), 2) as 평균시험점수 from grades inner join courses on grades.course_id = courses.id group by courses.title ; 서브쿼리를 사용해서 데이트를 조회하는게 그냥 조인문을 사용해서 사용하는것보다 데이터 조회 속도가 빨라서 그렇게 하신걸까요?