묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결윤재성의 Oracle SQL Database 11g PL/SQL Developer
기본제공되는 테이블 질문
현재 제 pc에 버전이 20버전이라서 세팅과정이 달라서 기본 제공되는 orcl에 테이블로는 접속이 안되는데 현재 기본 학습할수 있게 제공되고 있는 테이블을 create문으로 만들어 주실수 있을까요? 아니면 20버전에서 제공되는 table을 가져올수 있는 방법좀 부탁드립니다.
-
해결됨Database - SQL
선생님 mssql 한줄실행 단축키는 없을까요?
오라클은 컨트롤+엔터 키로 한 줄씩 실행이 가능한데요, 혹시 mssql 도 이런 기능이 있나요?찾아봤는데 mssql은 한 줄 실행을 하려면 드래그해서 써야 한다는 글만 나와서 질문드립니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
인덱스의 저장 방식에 대해서 질문이 있습니다!
안녕하세요 루키스님. 항상 좋은 강의 감사드립니다!!!인덱스 및 복합 인덱스 강의를 들으면서생긴 궁금증 하나를 여쭤보려 합니다!※ 해당 질문은 Clustered Index 기준입니다.개요.인덱스 강의 때 Clustered Index는 물리적인 데이터의 저장 순서의 기준이라고 하셨습니다. 따라서 사전처럼 데이터가 키에 따라 정렬된 상태로 저장되는 것으로 이해했습니다.그런데 복합 인덱스 강의를 들으면서 인덱스가트리 구조의 페이지로 나뉘고 써칭을 할 때 페이지 트리 탐색 후 찾은 인덱스(키)의 RID를 읽어서 본격 실제 물리적인 데이터를 찾는다고 말씀하셨습니다.의문."데이터가 애초에 정렬된 상태로 저장되면 트리 탐색 혹은 이분 탐색으로 끝날 텐데 왜 굳이 RID를 읽고 한 번 더 써칭을 하는 것일까?" 그래서 제가 아래와 유추와 결과를 냈는데 혹시 맞을까요? (Clustered Index 기준)유추."데이터가 물리적으로 정렬된 것은 맞을 것 같은데..그렇다면 내가 생각한 데이터의 기준이 다를까?인덱스는 일종의 Key이므로 데이터는 Key와 Value의 조합이겠군?그렇다면 강의에 말씀하신 데이터는 엄밀히 말하면 Key 데이터와 Value 데이터로 나눌 수 있겠군?"결론.인덱스(Key)는 실제 디스크에 정렬된 상태로 저장되지만 그 인덱스(Key)에 대응되는 실제 데이터(Value)는 실제 디스크에 정렬된 상태로 저장되지 않고 대신에 리니어 하게 만 저장된다. 그렇기 때문에 정렬되지 않은 실제 Value를 찾기 위해서 RID를 읽는 것.(Value 마저 정렬된다면.. 그것 나름대로 또 끔찍하겠군요... 중간에 추가 삽입될 때마다 방대한 데이터가 한 칸씩 뒤로 밀리기 때문에요.)그래서 인덱스(Key)는 트리 탐색을 하고인덱스(Key)에 대응되는 Value를 찾기 위해서 RID를 읽고 찾아갑니다.+그 다음 강의인 Clusterd vs Non-Clustered를 시청 후 해결됐습니다.위에서 제가 언급한 결론은Non-Clustered Index의 경우네요.그러면 Clustered Index의 경우 Key가 정렬되어 저장된 곳에 바로 Value가 저장되는군요. 그래서 실제 데이터 자체가 디스크에 정렬된 상태로 저장된다고 볼 수 있겠네요. Non-Clustered에 비해서 검색 속도는 빠르겠지만 대신에 Trade Off로 데이터의 추가 삽입/삭제가 느리겠군요. 왜냐하면 Value 까지 포함한 큰 데이터들이 전부 정렬된 상태를 항상 보장 받아야 하기 때문에요.
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
(LeetCode.627) IF문 보다 CASE문의 실행시간이 왜 더 빠른가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.CASE문으로 실행했을 때는 241ms, IF문으로 실행했을 때 280ms로, CASE문이 더 빨랐습니다.저는 CASE문의 구조가 더욱 복잡해 시간이 더 오래 걸릴 것이라 생각하고 IF문으로 돌려봤는데 오히려 이게 더 느리네요. 그 이유를 알 수 있을까요?
-
미해결데이터 분석 SQL Fundamentals
변수 생성 순서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.변수 생성 관점에서, select 절에서 만든 변수는 해당 테이블에서 처음 생성 되는 것인가요 아니면select 절에서 생성되어 이후 where 등에서 조작이 가능한 것인가요?위의 구문은 왜 틀렸을까요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
Oracle SQL 질문입니다.
MySQL 에서 limit 사용하는 것처럼 Oracle SQL에서도 사용하고 싶습니다.rownum을 이용하게 될 경우 group by, order by 전에 실행되어 원하는 값이 나오지 않는데 이럴경우 어떻게 해야하나요?
-
미해결데이터 분석 SQL Fundamentals
온라인? 인라인?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강사님 특정 쿼리 방식이 '어떨 때' 주로 사용된다고 말씀하시면서 온라인 혹은 인라인 이라고 언급하신것같은데... (6:46 쯤)"온라인" 거래 관련 데이터를 다룰 때 상관 서브쿼리를 주로 사용한다는 말씀이셨을까요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
pandas를 활용한 매서드 기능 중 오류
pandas 라이브러리와 Pymysql - 파일로 데이터 저장 강의의5:14초 중 명령문을 실행 시키면 작동은 되나, 오류코드가 같이 나오는데 구글링을 통해 답변을 찾아봐도 해결 방법을 얻기 어려워 질문 남깁니다.
-
미해결데이터 분석 SQL Fundamentals
"집합의 레벨"의 의미
안녕하세요유익하고 훌륭한 강의 덕분에 쿼리 이해가 일취월장하고 있습니다. 감사합니다. 강사님께서 거듭 강조하시고 중요하다고 지적하신 "집합의 레벨"이 무슨 의미인지 문의드립니다.group by로 집계하거나 analytic sql로 데이터를 aggregate할 때 "집합의 레벨"이란 표현이 자주 나오는데 어떻게 이해하면 좋을까요? 하나의 행(레코드)가 여러 열(속성)을 가지는 경우에 있어서, 어느 하나의 열을 기준으로 다른 열의 값을 집계할 때, 그 기준이 되는 열을 집계결과의 '집합의 레벨' 이라고 이해하면 될까요? 이전 질문과 같이, 저도 첫 임시테이블(temp_01)에서 group by를 product_id와 category_id 두 열을 기준으로 했습니다. 여기서 첫 임시테이블의 '집합의 레벨'인 product_id이므로 category_id를 또다른 레벨로 두는 것이, 기능상 차이는 없지만 개념상 부적절하다고 생각하면 옳게 이해한 것일까요? "집합의 레벨"이라는 표현이 모호하게도 들으면 이해되는듯 하면서도 막상 쿼리를 작성할 때 머릿속에 원하는 결과가 흐릿해서 바라는 대로 결과를 얻지 못해 질문드립니다.
-
미해결데이터 분석 SQL Fundamentals
조인시 SQL 실행 순서에 관한 질문입니다.
안녕하세요? 강사님질문이 있습니다Outer조인실습02 강의의 8분50초쯤에 city가 Madrid인 고객에 대해서 left join이 실행된다고 강조해주셨습니다여기서 질문이 저는 sql 실행 순서가 from->where->groupby->... 로 알고 있는데이 순서가 맞다면 from절에서 전체 고객에 대해 join을 다 수행 한 다음에 그 결과 테이블을 where 절로 city가 Mardrid 인 고객만 필터되는 것이 맞다고 생각드는데이건 내부적으로 SQL이 최적화하면서 실행 순서를 무시(?)하는 것으로 받아들이면 되는걸까요?감사합니다
-
미해결다양한 사례로 익히는 SQL 데이터 분석
맥 데이터 복원 문제 해결방법 공유드립니다.
구글링해보니 DBeaver Github에 해결방법이 나와있어 정리하여 공유드립니다.https://tommyhouse.oopy.io/648f5df9-0b85-4fe0-a62b-d48cd6658894
-
미해결데이터 분석 SQL Fundamentals
여러 테이블을 조인할 경우 성능 질문
안녕하세요? 강사님 머신러닝 강의에 이어서 SQL 강의도 잘 보고 있습니다질문이 있는데가령 3개의 테이블을 join할 경우테이블a join 테이블b join 테이블c 이렇게 순서대로 join하는 것과테이블a와 테이블b를 join하고 그 결과를 서브쿼리로 해서 테이블 d로 만들고 테이블c와 join하는 것과 성능적인 측면에서는 차이가 없는건지 궁금합니다
-
미해결데이터 분석 SQL Fundamentals
맥에서는 "서비스" 창에 해당하는 게 무엇인가요?
따로 신경쓰지 않아도 되어서 별도의 설명이 없는거겠죠?
-
미해결데이터 분석 SQL Fundamentals
혹시 실무에서는 칼럼에 comment를 달아서 관리하나요?
칼럼명만 가지고 이게 어떤 의미인지 바로 파악이 어려운데, 보통 실무에서는 한글로 어떤 의미인지 comment를 달아놓나요?
-
해결됨SQL Server 컨설턴트가 알려주는, 쿼리 능력 레벨업(고급 T-SQL 쿼리)
Merge 사용시 임시테이블 사용 가능 유무 문의
실무에서 MERGE를 사용해보려고 임시테이블에 MERGE를 적용하였더니 오류가 계속 발생 하였습니다. 혹시 MERGE는 임시테이블에서는 사용할 수 없는 건가요?
-
해결됨SQL Server 컨설턴트가 알려주는, 쿼리 능력 레벨업(고급 T-SQL 쿼리)
RANGE에 대해서 질문드립니다
이전 수업에서 RANGE가 기본이라고 적혀 있었는데 FRAME단에 RANGE로 BETWEEN을 하는 것과 ORDER BY까지만 선언하는 것과 차이가 있나요?
-
해결됨SQL Server 컨설턴트가 알려주는, 쿼리 능력 레벨업(고급 T-SQL 쿼리)
안녕하세요 파생 테이블과 CTE 성능에 관련된 질문입니다.
우선 강의 잘 듣고 있습니다 :)간단한 질문인데 파생 테이블과 CTE는 무조건 하나를 골라서 사용하는 것이 아닌건 강의를 통해서 알겠는데 이 두 기능의 유의미한 성능 차이는 없나요? 지금까지는 계속 파생 테이블 형태로 쿼리를 짜왔는데 성능 차이가 없거나 CTE가 우위에 있다면 불필요하게 파생 테이블로 중복 작성되어있던 쿼리를 CTE로 바꾸려고요
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
lead가 아닌 lag로 해도 동일해보이는데요
SELECT DISTINCT lags.num1 AS ConsecutiveNumsFROM (SELECT id, num AS num1, lag(num) OVER(ORDER BY id) AS num2, lag(num,2) OVER(ORDER BY id) AS num3 FROM logs ) AS lagsWHERE lags.num1 = lags.num2 = lags.num3 으로 하면 1과 2가 나오네요 ㅎㅎ ㅠ FROM 절 서브쿼리만 따로 돌려봤을 때에도 num1~3이 모두 같은건 1밖에 없고 테이블을 심플하게 엑셀로 생각해봐도 lead나 lag나 다를게 없어보이는데 최종적으로 돌려볼때는 자꾸 1,2가 모두 나와서요
-
미해결데이터 분석 SQL Fundamentals
join 실습 관련 질문 있습니다.
안녕하세요! 강의 정말 잘 듣고 있습니다!!!!본 영상에서 첫번째 예시로 기간 범위에 따른 조회(1997년 주문)를 예시로 들어주셨는데 -- 강사님 예시 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND b.order_date BETWEEN to_date('19970101', 'yyyymmdd') AND to_date('19971231', 'yyyymmdd');그런데 기간 범위를 설정할 때 1년 범위 설정 쿼리가 너무 길어보여서 다른 function들을 찾아서 적용해보았습니다.-- 수정1 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND date_part('year', b.order_date) = '1997';(물론 이쪽은 연도나 월 등 딱 하나만 인덱싱이 가능하니 한계는 있어보이네요.)혹은-- 수정2 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND b.order_date BETWEEN '1997-01-01' AND '1997-12-31';이렇게 작성해도 결과물은 같긴 하더라고요.강사님이 들어주신 예시의 to_date()는 검색해보니 대부분 오라클에서 많이 언급되는 것 같은데,이쪽 쿼리가 더 범용적으로 사용되기에 사용하신 것인지, 아니면 다른 function도 딱히 문제는 없는 것인지 궁금합니다.강의 최고입니다!! 감사합니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
Set 3 . 4번 문제 풀이
왜 having 뒤에 붙는 count 구문에 distinct를 넣어야 하나요? 그냥 count(s.submission_id) 를 넣으면 안되는지 궁금합니다.