묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결다양한 사례로 익히는 SQL 데이터 분석
수료증
수료증 주나요?
-
미해결데이터베이스 중급(Modeling)
json 구조의 데이터를 저장할 때 재귀 관계가 맞는 방법인지 궁금합니다.
선생님 안녕하세요. 테이블 설계 중 고민 중인 부분이 있어 강의 복습하다가 의견을 여쭙고자 질문드립니다.제가 하려는 것은json 구조로 내려오는 데이터를 key, value 모두 각각 저장하려고 합니다.구조를 예를 들면,{"resReferenceList": [{"resTriglyceride": "mg/dL","resALT": "U/L","resType": "단위","resSight": ""},{"resTriglyceride": "150미만","resALT": "35이하","resType": "정상(A)","resSight": ""}],"resResultList": [{"resQuestionInfo": "","resInfantsCheckupList": [ ],"resQuestionInfoList": [{"resSmokingList": [{"resPeriod": "","resType": "일반담배(궐련)"},{"resPeriod": "","resType": "궐련형 전자담배","resPeriod1": ""}],"resApplicableYN1": "0","resSmokingStatus": "0","resDiseaseHistoryList": [{"resApplicableYN": "0","resType": "0","resDisease": "뇌졸중(중풍)"},{"resApplicableYN": "0","resType": "0","resDisease": "심장병(심근경색/협심증)"}],"resApplicableYN": "0","resAlcoholAmtList": [{"resUnit": "병","resNumber": "0.5","resType": "평균","resType1": "소주"}]}],"resOriGinalData": "","resInfantsDentalList": [ ]},{"resQuestionInfo": "","resInfantsCheckupList": [ ],"resOriGinalData": "","resInfantsDentalList": [ ]}],"resCheckupTarget": "홍길동"} (json 구조가 잘 보이게 하고 싶은데 붙여넣기 하면 계속 이렇게 되네요ㅠ죄송합니다.)이렇게 Object 형태에 List 형태도 포함되어 있습니다.그런데 좀 더 까다로운게 위의 Object 가 [] List 에 담겨 여러개 나오는 경우도 있습니다. (이거까지 생각하면 복잡해서 일단 위 구조만 고려했습니다.)이러한 형태가 계속해서 테이블에 쌓이게 하려고 합니다.우선 트리 구조라고 생각했기 때문에 재귀 관계 테이블을 떠올려서 그렇게 작업을 하려고 했는데요.-Id (pk, auto increment)-부모테이블Id (fk, 위 데이터의 부모격인 메인 테이블이 있습니다. (1:M 관계))-상위Id(id 와 fk 관계, 재귀)-리스트 번호(Obejct 가 리스트로 같은 상위 id 에 포함될 수 있는데, 그러면 각 Object 묶음이 구분이 되어야 하므로 구분하기 위한 번호)-key_name-value이렇게 생각을 했는데 조회시 상당히 불편해서 다른 방법이 있을지 고민되어 질문드리게 되었습니다.단순히 데이터를 쌓고 통계를 위한 조회 정도로 사용할 예정입니다.위와 같은 데이터 구조의 key, value 를 모두 저장해야 할 때 재귀 관계를 사용하는게 최선인지 아니면 다른 고민해볼 포인트도 있는지 의견 여쭙고 싶습니다.감사합니다.
-
해결됨SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법
기한이
안녕하세요 sql 작성법 교육을 받고 있는 수강자입니다. 교육수강이 8월18일까지 인걸로 알고 있습니다.아직 부족한 내용이 있어 한달 연장 신청을 부탁드립니다. 연장이 되면, 남은기한까지 교육수강을 마무리하도록 하겠습니다. 감사합니다.
-
미해결다양한 사례로 익히는 SQL 데이터 분석
CLI로 ga_export.sql 쉽게 불러오기
안녕하세요 강사님, 오늘부터 새로 강의를 듣게 되었는데 완강 목표로 열심히 듣겠습니다 ㅎㅎ강의 초반 환경설정에서 ga_export.sql이 large text여서 Dbeaver에서 스크립트 실행할 때 java heap space 부족 에러가 발생하더라고요.이 때 터미널로 쉽게 불러올 수 있는 방법을 찾았고, 다른 수강생분들에게도 도움이 될 것 같아 공유드립니다.아래 스샷처럼 터미널에서 sudo -iu postgres psql 입력 후 \i [ga_export.sql이 위치한 경로] 를 입력하면 쉽게 ga 데이터를 불러올 수 있습니다.
-
미해결데이터 분석 SQL Fundamentals
with temp_01 as () 관련 질문입니당
안녕하세요 선생님혹시 with temp_01 as ()를 사용해야만 하는, 특정 상황이 있을까요?
-
해결됨비전공자의 전공자 따라잡기 - 데이터베이스,SQL
limit offset 단점
안녕하세요 제로초님.항상 질 좋은 강의 감사합니다.offset 방식으로 pagination 구현 시 데이터가 누락될 수 있다는 단점을 설명해주시면서soft delete 방식으로 구현 시에는 해당 이슈가 괜찮다고 설명해주셨는데요.soft delete 방식으로 구현 시에도 동일한 이슈가 발생할꺼라는 생각이 들어 질문을 남깁니다.soft delete 방식으로 구현 시에도 조회 쿼리를 날릴 때, deleteAt이 null인 값인 data들은 filter 되기 때문에 동일한 이슈가 발생할꺼 같은데 맞을까요?추가로 삭제 연산을 soft delete 방식으로 구현 시, on delete option을 "casecade"로 설정했다면 부모 row가 삭제되었을 때, 자식 row도 soft delete 처리가 되나요?아니면 set null 방식으로 처리가 되나요?
-
미해결데이터 분석 SQL Fundamentals
스칼라 서브쿼리 관련
안녕하세요, 강의 잘 듣고 있습니다.스칼라 서브쿼리를 성능문제로 지양해서 써야한다고 말씀하셨는데 혹시 더 구체적으로 알 수 있을지요?스칼라 서브쿼리나 다른 서브쿼리나 어차피 메인 테이블을 하나씩 읽으면서 조건으로 달리 테이블을 처리하는건 같지 않나요?DB입장에서 혹시 실행계획을 세울 때 어떻게 차이가 날까요?제대로 질문을 하였는지 잘 모르겠는데 답변 주시면감사하겠습니다.
-
미해결다양한 사례로 익히는 SQL 데이터 분석
컬럼의 뜻에 대해 질문 드립니다.
채널별 고유/주문 사용자 건수와 매출 금액 및 비율 SQL로 구하기 2 를 학습하면서/************************************ 채널별 고유 사용자 건수와 매출금액 및 비율, 주문 사용자 건수와 주문 매출 금액 및 비율 채널별로 고유 사용자 건수와 매출 금액을 구하고 고유 사용자 건수 대비 매출 금액 비율을 추출. 또한 고유 사용자 중에서 주문을 수행한 사용자 건수를 추출 후 주문 사용자 건수 대비 매출 금액 비율을 추출 *************************************/ with temp_01 as ( select a.sess_id, a.user_id, a.channel_grouping , b.order_id, b.order_time, c.product_id, c.prod_revenue from ga_sess a left join orders b on a.sess_id = b.sess_id left join order_items c on b.order_id = c.order_id where a.visit_stime >= (:current_date - interval '30 days') and a.visit_stime < :current_date ) select channel_grouping , sum(prod_revenue) as ch_amt -- 채널별 매출 --, count(distinct sess_id) as ch_sess_cnt -- 채널별 고유 세션 수 , count(distinct user_id) as ch_user_cnt -- 채널별 고유 사용자 수 --, count(distinct case when order_id is not null then sess_id end) as ch_ord_sess_cnt -- 채널별 주문 고유 세션수 , count(distinct case when order_id is not null then user_id end) as ch_ord_user_cnt -- 채널별 주문 고유 사용자수 --, sum(prod_revenue)/count(distinct sess_id) as ch_amt_per_sess -- 접속 세션별 주문 매출 금액 , sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액 -- 주문 세션별 매출 금액 --, sum(prod_revenue)/count(distinct case when order_id is not null then sess_id end) as ch_ord_amt_per_sess -- 주문 고유 사용자별 매출 금액 , sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user from temp_01 group by channel_grouping order by ch_user_cnt desc;위 쿼리의 쿼리 뜻이 잘 이해가 안되어 질문 드립니다., sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액, sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user이 두 항목은 각각 접속 고유 사용자별 주문 매출 금액,주문 고유 사용자별 매출 금액이라 명칭 되어 있는데, 어떤 의미를 가지고 있는 것인지 잘 이해가 되지 않아 질문 드립니다.접속 고유 사용자별 주문 매출 금액 : 사용자 대비 30일이내 매출 금액주문 고유 사용자별 매출 금액 : 주문 대비 30일 이내 매출 금액이렇게 이해를 하면 될런지요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
group by에 대해 질문 드립니다.
사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL로 구하기 - 02위 과정을 학습하고 있습니다select month ,case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end as gubun , count(*) as user_cnt from temp_01 group by month, case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end order by 1, 2;위 쿼리에서 group by 항목이 이해가 잘 안되서 질문 드립니다.위와 같이 그룹을 지으면일자 + monthly_user_cnt 의 조합으로 그룹들이 만들어짐select에서select month ,case when monthly_user_cnt = 1 then '0_only_first_session' when monthly_user_cnt between 2 and 3 then '2_between_3' when monthly_user_cnt between 4 and 8 then '4_between_8' when monthly_user_cnt between 9 and 14 then '9_between_14' when monthly_user_cnt between 15 and 25 then '15_between_25' when monthly_user_cnt >= 26 then 'over_26' end as gubun위 쿼리로 넘어온 데이터(아직 컬럼으로 만들어지지 않은채 각 그룹별로 정의되어 넘어온 데이터)에 컬럼명을 붙여줌위와 같은 동작을 하는게 맞는지요?제가 이해하는게 맞는지 알고 싶습니다.
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
find() 가 리턴하는 instance member
nestjs + mongoose 조합이지만, https://velog.io/@modolee/mongodb-document-to-javascript-object와 같이 find()가 리턴하는 인스턴스 내부가 `_doc` 처럼 되어 있었습니다.저는 user.age 이렇게 사용하고 싶은데, user 밑에 age 라는 변수도 없고, 꼭 .toObject()를 해야 하나요?아직 이 부분에 수수께끼가 풀리지 않았습니다.설명해 주실 수 있나요?
-
미해결데이터 분석 SQL Fundamentals
FROM emp JOIN dep 또는 FROM dep JOIN emp 의 다른 점
안녕하세요 강사님, 조인 실습을 하다가 목적에 따라 FROM 과 JOIN에 들어가는 테이블이 다른 것을 알게되었는데 그 이유과 기준이 궁금합니다."job이 SALESMAN인 직원정보와 직원이 속한 부서명을 가져오기" 의 예시에선 FROM emp JOIN dept로 조인을 하셨다면, "부서명 SALES와 RESEARCH의 소속 직원들의 부서명, 직원번호, 직원명, JOB 그리고 과거 급여 정보 추출"의 예시에선 FROM dept JOIN emp 로 조인을 하셨습니다.감사합니다!
-
미해결다양한 사례로 익히는 SQL 데이터 분석
로드맵을 따라 두 강의를 따라 학습을 하고 있습니다.
데이터 분석 sql fundamentals의 다운받은 자료는 한글이 깨지지 않던데, 지금 강의는 다운받고 압축을 풀어보면 주석에 있는 한글이 다 깨져 있습니다.강의를 보면서 한글이 보일때마다 최대한 수정을 해보려 하는데... 강의에 안보이는 한글 주석들이 꽤 있습니다.저만 그런건지 확인 부탁 드리고 싶습니다.제 환경은 윈도우11, 반디집으로 압축을 풀었습니다.
-
미해결다양한 사례로 익히는 SQL 데이터 분석
현재 모든 판다스 파일에 오류가 발생되는것 같습니다.
어제 장문의 글을 올렸는데 이유는 모르겠으나 찾아볼수가 없어서 다시 작성을 합니다.현재 sqlalchemy의 문법 강제성의 이유로 2.0.0 버전 이후로는 사용하신 방법으로는 실행이 되지 않습니다.이에 2.0.0 이전 버전으로 다운그레이 하거나(저는 이 방법이 통하지 않아 다른 방법을 찾아봤습니다)다음과 같은 방법을 사용하면 됩니다.제가 참고한 해외 커뮤니티들에서 제시하는 사용 방법으로는 모든 query에 text() 함수를 사용해 반환된 값을 read_sql_query에 사용하라고 되어 있었는데 테스트 해 보니 현재 작성된 쿼리 스트링으로 사용해도 문제가 없었습니다.import pandas as pd from sqlalchemy import create_engine, text conn_string = 'postgresql://postgres:1324@localhost:5432/inflearn' conn = create_engine(conn_string) postgres_engine = conn.connect()
-
미해결데이터 분석 SQL Fundamentals
스칼라 서브쿼리에 질문이 있습니다.
-- 아래는 수행 오류 발생. 스칼라 서브쿼리는 단 한개의 결과 값만 반환해야 함.select a.*, (select ename from hr.emp x where x.deptno=a.deptno) as enamefrom hr.dept a; 위의 테스트 결과가 에러가 나오는데 select ename from hr.emp x, hr.dept a where x.deptno=a.deptno 서브쿼리만 따로 출력해 보면 ename에 대한 하나의 컬럼 값만 나옵니다. 아무리 생각해도 1개 이상의 row나 1개 이상의 컬럼이 서브쿼리에서 반환되지 않고 모든 ename은 하나의 값만 가지고 있는걸 확인했는데, 왜 에러가 발생하는 것인지 잘 모르겠습니다.
-
미해결데이터 분석 SQL Fundamentals
서브쿼리의 동작 횟수가 궁금합니다.
-- 상관 서브쿼리로 구하기select a.customer_id, a.contact_name, a.city, b.order_id, c.product_id, c.amount, d.product_namefrom nw.customers ajoin nw.orders b on a.customer_id = b.customer_idjoin nw.order_items c on b.order_id = c.order_idjoin nw.products d on c.product_id = d.product_idwhere c.amount >= (select avg(y.amount) avg_amountfrom nw.orders xjoin nw.order_items y on x.order_id = y.order_idwhere x.customer_id =a.customer_idgroup by x.customer_id)order by a.customer_id, amount; 이 쿼리에서 동작은 하나의 id가 서브쿼리에 넘어가 해당 id의 전체 amount의 avg가 반환되는 것으로 알고 있습니다.그런데 이 동작이 수행될 때마다 서브쿼리는 join을 매번 수행해서 작업을 하는 것인지, 아니면 한번 만들어진 join을 사용해 모든 customer_id를 비교하여 정렬된 데이터의 avg를 반환하는 과정을 수행하는 것인지를 알고 싶습니다. 그리고 혹시나 해서 실행계획도 확인을 해봤는데 이러한 부분을 확인할 수 없더라고요.제가 궁금해 하는 서브쿼리의 반복 처리에 대한 실행 여부를 확인할 수 있는 방법이 있는지도 알고 싶습니다.
-
미해결데이터 분석 SQL Fundamentals
확인 부탁 드립니다.
-- 직원의 가장 최근 부서 근무이력 조회. 비상관 서브쿼리select * from hr.emp_dept_hist_01 a where (empno, todate) in (select empno, max(todate) from hr.emp_dept_hist_01 xgroup by empno); 위 설명을 하실때, 해당 서브쿼리는 XXX 서브 쿼리는 아니다 라고 말씀 하셨는데 제가 반복해서 들어도 어떤 말씀을 하는지 잘 안들려서 뭐라고 말씀 하셨는지 알고 싶습니다. 그리고 서브쿼리에 where절을 넣어 1건만 나오게 하셨는데, 그러면 in이 아니라 비교 연산자를 사용하는게 맞는거 아닌가요? 아니면 in을 사용하더라도 1건만 나오게 하는게 맞는 경우라 이해를 하면 되는걸까요?
-
미해결데이터베이스 중급(Modeling)
M:N 관계 테이블의 상속형 PK 질문
안녕하세요, 선생님.M:N 관계 중 상속형 PK에 관해서 질문 드릴게 있는데요.제가 예전에 데이터베이스 수업을 들을 때 엔티티 자체적으로 식별자가 없어 다른 FK를 PK처럼 쓸때 해당 엔티티를 weak Entity라고 들었던 것 같은데요그러면 해당 내용에서 학생과 과목의 PK를 참조해서 PK로 사용하고 있는 수강이라는 테이블은 weak entity에 속하는 건가요?감사합니다.
-
미해결데이터 분석 SQL Fundamentals
강사님 수업내용을 블로그에 정리해서 올려도될까요?
안녕하세요 강사님혹시 블로그에 출처를 남기고 해당 강의내용을 정리해서올려도될까요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
SQL 구글 애널리틱스 전체 데이터셋 다운로드
안녕하세요. 완강을 하고 전반적으로 복습을 하는 차원에서 다시 쿼리를 공부하고 있는데 3달이 아닌 전체 데이터세트를 가지고 한 번 해보고 싶어서요. 혹시 구글 애널리틱스 전체 데이터셋을 다운 받을 수 있는 방법이 있을까요 ? 제가 찾아보니까 날짜 하루하루 단위로 다운로드는 가능한데 1년치를 이렇게 다운받는 건 너무 일이 많은 거 같아서 질문드립니다.
-
미해결윤재성의 Oracle SQL Database 11g PL/SQL Developer
PTT 파일
PPT 파일 다운 어디서 할 수 있을까요?