전체 글(159)
-
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (7)
1. 서브쿼리-중급 ⌘ 어렵게 느껴졌던 부분 분석 한 번에 어떻게 작성해야 할지 감이 안오면 divide & conquer를 하라셨는데, 이 부분을 거꾸로 접근해서 계속 길어지는 코드 안에서 길을 잃고, 어디까지 잘되었는지를 반복적으로 보며 시간을 너무 많이 쓰는 경향이 있다고 느꼈다. 가장 작은 조각부터 만들고, 거기에 살을 붙이는 방법이 있겠고, 아니면 큰 조각을 만들더라도 큰 구조만 작성하고, 서브쿼리가 들어가야 할 부분은 비워둔 채로, 해당 부분만 따로 쿼리 작성해서 큰 구조 안에 집어넣는 방식으로 접근하길 반복해봐야겠다. 평균을 막바로 구할 수 있는지, 아니면 그럴 수 없기 때문에 서브쿼리로 먼저 COUNT(*) 등을 집계한 컬럼을 포함하는 테이블을 만들어두고 써야 하는지가 항상 명확하지 않아서..
2023.08.04 -
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (6)
1. foreign key (제약조건) foreign key는 일종의 제약조건에 해당하기 때문에 데이터를 추가하거나 삭제할 때 ‘데이터 무결성’에 어긋나면 에러를 일으킴 데이터 무결성 = 데이터가 문제없이 잘 들어가 있다는 의미. 즉, 데이터도 순서대로 넣어야 하고, 순서대로 삭제해야 함(그래서 제약조건이라고 하는 것) foreign key를 생성할 때 어떤 테이블을 참조하는지도 명시하는데, 참조대상이 되는 테이블(A)에 없는 key값을 참조하는 쪽의 테이블(B)에서 추가한다거나, 반대로 참조하는 쪽 테이블(B)에는 key값이 남아있는데 참조대상이 되는 테이블(A)에서 해당 key값을 삭제하려고 하면, 결국 동일한 상황이 되고, 같은 이유로 에러를 발생함 2. JOIN JOIN하면, 두 테이블이 오른쪽으..
2023.08.03 -
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (5)-postgreSql
실시간 학습에서 다루는 SQL은 mySQL이다. 근데 예습/복습 개념으로 들어오던 온라인 학습이 postgreSQL이라서 살짝 당황했다. 문법이 좀 다르기 때문인데, 지금 SQL을 처음 배우는 입장에서는 문법이 엄청은 아니더라도 다른 걸 배운다는 게 별로 마음에 들진 않는다. 게다가 온라인 수업이다보니 제약이 좀 많은데, 강사분이 이미 다 만들어진 강의안을 가지고 설명을 해주시는데 대명사를 너무 많이 쓰셔서 도무지 설명을 듣고 있다는 느낌이 안들 때가 있다. 이렇게 해서 이렇게 하면 이렇게 됩니다;;;라니....이 문장 어디에도 설명이라고 볼 수 있는 부분은 없다... 그러다보니 이 파트는 시간이 아깝기도 하고 자꾸 듣기가 싫어지는데 할 수 없이 참고 듣는 중이다. 전의 회사에서 postgreSQL을 썼..
2023.08.02 -
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (4)
1. 실습 ⌘ 처음 접하는 DB, 테이블의 info 파악하기 컬럼 구성 확인 : LIMIT 사용 테이블의 행 갯수 확인 COUNT(*) : 행의 수. COUNT(ID)와 결과는 동일하지만 '행'을 알고 싶다면 * 쓰는게 의미적으로 맞음 https://benant.wordpress.com/2010/07/25/sql에서-count-결과에-null이-포함될까/ COUNT(*) : null 포함 COUNT(컬럼명) : null 제외, 빈 문자열은 포함 빈 문자열도 제외하려면 빈 문자열 → null 후에 COUNT하면 됨 ex) COUNT(IF (컬럼명='', null, 컬럼명)) COUNT(DISTINCT 컬럼명) : null 제외, 중복 제외 범주형 데이터의 카테고리가 뭐가 있는지 확인하고 싶을 때 DISTI..
2023.08.01 -
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (3)
1. 서브쿼리(조건의 중첩) ⌘ 쿼리 속 쿼리 메인 쿼리 또는 쿼리의 속에 중첩된 모양으로 쿼리가 들어갈 수 있는데 이 '쿼리 속 쿼리'를 서브쿼리라고 부름 SELECT문, FROM구, WHERE문, HAVING절, ORDER BY절에 모두 서브 쿼리를 넣을 수 있으며, GROUP BY절에는 서브 쿼리를 넣지 않음 ⌘ SELECT절의 서브쿼리 = 스칼라 서브쿼리 스칼라 서브쿼리이므로 결과값이 반드시 하나의 값이어야 함 SELECT절은 컬럼의 나열이니까, 여기에 서브쿼리를 쓰게 되는 경우는 메인 쿼리의 FROM절 테이블과 다른 테이블에서 컬럼의 값을 가져와야 할 때 캍은 테이블이더라도 딱! 있는 컬럼이 아니라서 여러 컬럼의 값을 조합해야 하거나 한 컬럼에서 일부를 추출해야 할 경우일 것 같음 ⌘ FROM절..
2023.07.31 -
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (2)
1. 원하는 데이터 만들기 ⌘ 컬럼 (테이블에서 실제) 정렬 ORDER BY [컬럼1] [컬럼2] 컬럼1 기준으로 정렬 → 컬럼1 값이 동일한 row 간에 컬럼2 기준으로 정렬 ⌘ 랭킹 순 정렬 RANK() OVER(OREDER BY [컬럼명]) 항상 ORDER BY와 함께 사용 SELECT절에 사용하며, 정렬된 순서에 순위를 붙인 새로운 컬럼을 보여줌(테이블의 실제 데이터에는 영향을 미치지 않음) 공동 순위가 있으면 다음 순위를 하나 건너 뜀 DENSE_RANK() OVER(ORDER BY [컬럼명]) 공동 순위가 있어도 다음 순위를 뛰어 넘지 않음 SELECT절에 사용 ROW_NUMBER() OVER(ORDER BY [컬럼명]) 공동 순위를 무시함(따라서 중복되는 숫자가 없음) SELECT절에 사용 ..
2023.07.27