[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (7)

2023. 8. 4. 18:30IT 라이프/패캠 데이터분석 부트캠프 9기

반응형

1. 서브쿼리-중급

어렵게 느껴졌던 부분 분석

  • 한 번에 어떻게 작성해야 할지 감이 안오면 divide & conquer를 하라셨는데, 이 부분을 거꾸로 접근해서 계속 길어지는 코드 안에서 길을 잃고, 어디까지 잘되었는지를 반복적으로 보며 시간을 너무 많이 쓰는 경향이 있다고 느꼈다. 가장 작은 조각부터 만들고, 거기에 살을 붙이는 방법이 있겠고, 아니면 큰 조각을 만들더라도 큰 구조만 작성하고, 서브쿼리가 들어가야 할 부분은 비워둔 채로, 해당 부분만 따로 쿼리 작성해서 큰 구조 안에 집어넣는 방식으로 접근하길 반복해봐야겠다.
  • 평균을 막바로 구할 수 있는지, 아니면 그럴 수 없기 때문에 서브쿼리로 먼저 COUNT(*) 등을 집계한 컬럼을 포함하는 테이블을 만들어두고 써야 하는지가 항상 명확하지 않아서 헤맨다. 이 부분에서 내가 진짜로 헷갈리는게 뭔지는 모아서 비교해봐야겠다.
  • 다양한 에러를 많이 본 하루였는데, 에러 코드는 다르더라도 내가 반복적으로 잘못 쓰는 syntax 에러가 있어보이고, group by와 관련있어 보인다. 요 부분도 모아서 비교해봐야겠다.

 

2. 집합 연산

UNION, UNION ALL

  • UNION : 둘 이상의 SELECT문의 결과 집합을 결합하며, 중복된 행은 제거
  • UNION ALL : UNION과 기본적으로 같으나 차이점은 중복된 행을 중복적으로 포함한다는 부분

INTERSECT

  • 둘 이상의 SELECT문의 결과 집합의 교집합을 반환

 EXCEPT

  • 첫 번째 결과 집합 - 두 번째 결과 집합을 반환. 즉, 차집합을 반환.

 

3. VIEW

VIEW

  • 테이블을 기반으로 한 가상 테이블
  • 보통 현업에서는 각 부서별, 혹은 직군별로 접근 가능한 컬럼을 달리하는데 VIEW가 사용될 수 있다고 함. 필요없는 컬럼은 애초에 제거하므로 복잡도도 줄일 수 있음

VIEW 생성, 수정, 삭제 문법

# 생성
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

# 수정
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

# 삭제
DROP VIEW view_name;

 

정리

온라인 수업으로 서브쿼리에 대해 더 익숙해졌다고 생각했는데 오늘 실습문제들을 풀면서 서브쿼리 지식이 제로로 돌아간 것처럼 느껴졌다. 그래서 오늘 실습했던 예제들을 다시 풀기 전에, 뭐가 어려웠는지, 나중에 비교해보고 더 잘 파악하기 위해 반복적으로 어려웠거나 버벅였던 부분을 위주로 정리했다.

 
728x90
반응형