안녕하세요 수업 질문입니다. 저만 그런건지 age index를 생성하기 전인데도 불구하고, age로 sort 할 경우 성능이 오히려 3배 가량 향상됩니다.. ㅜㅜ sort를 작성할 경우 수업과 동일하게 sort_key_generator는 나타나지 않고, documents returned도 0 으로 표기 됩니다. 하지만 explain 탭이 아닌 documents탭에서는 정렬방식이 적용 되어 문제없이 조회되는 걸로 보아 문법을 작성을 잘못 한것 같지않고, sort를 작성하면 explain이 제대로 나타나지 않아 헤매이고있습니다. index의 장점을 직접 체험하기 위해 데이터는 약 100만개 정도 생성한 상태로 따라해보는데, 의도와는 다른 현상이 나타나 질문드립니다!!
안녕하세요! 강의를 듣다가 궁금한것이 생겨서 문의 드립니다. -- 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여 select b.empno, max(b.ename) as ename, 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 b.empno order by 1; 여기서 왜 max(b.ename) 이라고 해야하는지 잘 이해가 안가서 문의 드립니다..! 감사합니다.
안녕하세요. 조인관련 실습을 하다가 궁금한점이 있어 문의드립니다. -- 직원명 SMITH의 과거 소속 부서 정보를 구할 것. 예제를 실행하려다 보니 저의 경우 일단 가장먼저 보이는 emp와 dept 테이블을 join하고 (JOIN순서는 상관 없다고 하셔서..) 나머지 테이블인 emp_dept_hist 테이블을 연결해주려 하다보니 아래와 같은 join 조건을 쓰게 되고 당연히 결과가 다르게 나오더라구요. 결과를 알고 보니 emp와 dept 테이블을 연결 안해야 하는게? 맞는거 같긴한데.. 제가 여러 테이블을 조인할때 어느 부분을 놓치고 있는 걸까요? ㅜ (ANSI가 아직 익숙하지 않아 일단 기존 방식으로 쿼리를 작성했습니다..) SELECT a.ename , c.fromdate , c.todate , b.deptno , b.dname FROM emp a, dept b, emp_dept_hist c WHERE a.deptno = b.deptno AND a.empno = c.empno AND b.deptno = c.deptno AND a.ename = 'SMITH' ;
date_part 나 justify_inteval, age 함수의 postgresql에서만 되는 걸로 확인이 됩니다. 같이 공부하고 있지만 저는 실제로 oracle을 사용하고 있기 때문에 오라클에서도 오늘날짜 - 입사 날짜를 하였을 때 근속년수가 xx년 x월 이렇게 나오게 하고 싶은데 extract(year from sysdate) - extract(year from hiredate)||'년' 으로 하면 년도만 나오는 방법만 생각이 나서요. 혹시 방법이 있다면 알려주시면 감사하겠습니다.
[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
안녕하세요 mongodb 수강 중 궁금한게 생겨서 질문드립니다. 현재 studio 3t로 데이터 입출력 하고있는데, putty로 우분투 접속 후 'sudo service mongod start' 후에 Studio 3T 접속한것과 putty를 실행하지 않고 Studio 3T 접속한 것의 차이를 모르겠습니다. 퍼티로 몽고DB 스타트를 하지 않아도 3T에서 데이터베이스 커넥트가 잘 되고 데이터 입출력도 잘 되더라구요 퍼티 실행 후 몽고DB start를 하는 이유가 무엇인가요?? 좋은 강의 잘 듣고있습니다 감사합니다!
DISTINCT 함수(거래처 목록, 중복 없이 뽑아주세요) 이 강의에서 과제를 내주셨잖아요? 거래내역의 입금 총액은? 이렇게요 . --거래내역의 총합 SELECT sum(amount) as total FROM transactions; 이걸 말씀하시는건지.. 아니면 제가 문제를 이해를 못하는건가요 ... 혹시 답을 적어주실수있나요 선생님의 과제 의도를 이해하고싶어서요
with temp_00 as ( select generate_series ('2016-08-02':: date , '2016-11-01':: date , '1 days':: interval ):: date as current_date ) select b. current_date , count ( distinct user_id) as dau from ga_sess a cross join temp_00 b where visit_stime >= (b. current_date - interval '1 days') and visit_stime < b. current_date group by b. current_date 위 SQL문에서 where visit_stime >= (b. current_date - interval '1 days') and visit_stime < b. current_date 이 부분이 이해가 가지 않습니다. current_date가 2016-08-02일 경우 visit_stime이 2016-08-02보다는 작아야 하고, 2016-08-01보다는 크거나 같다는 말인데.. 그럼 즉, 2016-08-01 00:00:00 ~2016-08-01 23:59:59 라는 건데요.. 그럼 이게 2016-08-01의 DAU가 아닌가요?.. select 절에서는 current_date로 group by를 해서 추출된 데이터는 2016-08-02의 DAU로 추출이 되더라구요.. 실제 csv파일로 받아서 보아도, 2016-08-01의 dau가 1569로 확인이 되는거 같기두 하구요.. with temp_00 as ( select generate_series ('2016-08-01':: date , '2016-11-01':: date , '1 days':: interval ):: date as current_date ) select b. current_date , count ( distinct user_id) as dau from ga_sess a cross join temp_00 b where visit_stime >= b. current_date and visit_stime < (b. current_date + interval '1 days') group by b. current_date with temp_00 as ( select generate_series ('2016-08-01':: date , '2016-11-01':: date , '1 days':: interval ):: date as current_date ) select b. current_date , count ( distinct user_id) as wau from ga_sess a cross join temp_00 b where visit_stime >= (b. current_date - interval '6 days') and visit_stime < (b. current_date + interval '1 days') group by b. current_date ; with temp_00 as ( select generate_series ('2016-08-01':: date , '2016-11-01':: date , '1 days':: interval ):: date as current_date ) select b. current_date , count ( distinct user_id) as mau from ga_sess a cross join temp_00 b where visit_stime >= (b. current_date - interval '29 days') and visit_stime < (b. current_date + interval '1 days') group by b. current_date ; 이렇게 구하는게 맞는거 아닌지 문의드립니다 !
select * from nw.orders where (customer_id,order_date) in ( select customer_id, max (order_date) from nw.orders group by customer_id) 이 쿼리를 날려도 customer_id 레벨이 M이라 LACOR이라는 value가 중복이 되는 건가요? 강의에선 메인 쿼리 레벨이 1이고 서브 쿼리 레벨이 M일 때 메인 쿼리 레벨이 1로 유지된다고 했는데, 이 쿼리처럼 메인 쿼리 레벨이 M이고 서브 쿼리 레벨이 1일 때도 메인 쿼리 레벨은 M으로 유지된다고 이해해도 괜찮을까요?
안녕하세요. 권철민 선생님. 저는 SQL을 업무에서 활용하고 싶은 직장인입니다. 선생님 강의로 SQL을 열심히 공부하고 있고 지금은 Analytic SQL을 수강 중인데요. 제 궁극적인 목표는 회사 데이터베이스에서 SQL로 데이터를 가져와 판다스 등으로 처리한 뒤 머신러닝으로 결과를 도출하는 것이라서 'Analytic SQL이 내게 필요할까?' 라는 생각이 들고 있습니다. 왜냐하면 다양한 계산들은 판다스에서 더 수월히 수행할 수 있을 것 같아서요. 혹시 제가 아직 지식이 부족하여 그런 것이고 제가 모르는 Analytic SQL의 장점이 있다면 조언 부탁드립니다.
안녕하세요, 제가 맥북을 사용하고 있고, PostgreSQL과 Dbeaver 두가지 모두 다운받았는데 이 두개가 연동(?)이 안되는 것 같아요 ㅠㅠ 인터넷 검색해보니 도커를 다운받아야한다는데 제 컴퓨터엔 도커도 설치가 안되네요.. 윈도우 기반으로 설명해주셔서 명강의를 어떻게 들으면 좋을 지 고민이라 여쭤봅니다.
안녕하세요~ 아래 문제에서, join nw.shippers d on b.ship_via = d.shipper_id >> 왜 ship_via = shipper_id 인지 잘 이해가 안됩니다. 두 키 값이 같은 키 값인걸까요? [문제] -- Berlin에 살고 있는 고객이 주문한 주문 정보를 구할것 -- 고객명, 주문id, 주문일자, 주문접수 직원명, 배송업체명을 구할것. select a.customer_id, a.contact _name, b.order_id, b.order_date , c.first_name||' '||c.last_name as employee_name, d.company _name as shipper_name from nw.customers a join nw.orders b on a.customer_id = b.customer_id join nw.employees c on b.employee_id = c.employee_id join nw.shippers d on b.ship_via = d.shipper_id where a.city = 'Berlin'; 그리고 회사에서 DB2를 사용하는데, 현재 강의에서 알려주시는 postgres2 와 많은 차이가 있는지도 문의 드립니다..!
안녕하세요! -- 고객명 Antonio Moreno이 1997년에 주문한 주문 정보를 주문 아이디, 주문일자, 배송일자, 배송 주소를 고객 주소와 함께 구할것. 이 문제에서, 1997년에 주문한 주문 정보 where절 작성할 때 where b.order_date between '19970101' and '19971231' 이렇게 작성해도 1997년 주문 정보가 추출이 되는 거 같은데, 강의에서 between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd') 이렇게 to_date라고 쓰신 이유가 따로 있을까요?!
수업은 디비버에 postgre를 연결시켜서 쓰고 있는데, 만일 mysql을 디비버에 연결하면 mysql에 맞는 문법으로 쿼리를 적용해야 하는건가요? 각 dbms마다 조금씩 문법이 다른걸로 알고 있어서 문의드립니다 그리고, 수업에서 배우는 쿼리문은 posrgre에서만 사용할수 있는 문법인가요?