5월 14일 TIL

이진우·2024년 5월 14일
1

TIL

목록 보기
15/32

오늘은 SQL 문제 찾기에 집중해서 시간을 사용했다.

SQL 문제점 찾기

내가 생각하고 있는 문제

  1. 전체 데이터 셋을 확인을 못함
    1. 중복 데이터 확인을 못함
  2. 서브 쿼리 사용 시기를 잘 모름
  3. join 사용 이후 데이터 중복이 생기는 이유를 모름
  4. 아직 SQL 쿼리문 작동 순서를 인식하고 쿼리문을 작성하는 것 같지 않음
    1. 그냥 막 짠다는 뜻

일단 2번 부터 해결해봅시다.

  • 코드카타 68번

라이브 세션 내용을 먼저 정리해보자

  • 먼저 서브 쿼리란
    - 칼럼들을 활용한 사칙연산, 집계함수, 윈도우 함수 등 많은 연산을 하는 경우
    - 서브 쿼리는 이를 순차적, 구조적으로 기록하는 역할을 수행
    - 복잡한 연산시, 최종 결과룰 반환하기 위한 중간 테이블의 역할

  • 근본적으로 서브쿼리를 사용하는 이유에 대해서 먼저 알아보자
    - N번의 쿼리문 실행을 1번의 쿼리문으로 실행하기 위해 쿼리의 결과값을 가지고 추가 연산을 하기 위해 사용

  • 서브 쿼리 실행 순서
    - 서브 쿼리 실행을 먼저하고 메인 쿼리문
    - 그렇다면 서브 쿼리가 2개이면 어떻게 동작?
    - 애초에 서브쿼리가 2개 이상 사용이 될까?

  • 그렇다면 서브쿼리를 어느 상황에 사용하는지 확인해보자
    - 수업때 배운 서브 쿼리문 종류는 3가지
    - 일반 중첩 서브쿼리
    - where절에 사용
    - 스칼라 서브쿼리
    - 하나의 칼럽 처럼 사용
    - 인라인 뷰 서브쿼리
    - 하나의 테이블처럼 사용

라이브 세션이외에 정보를 찾아보자

  • 서브 쿼리란
    - 다른 테이블의 값을 기준으로 한 테이블에서 데이터를 검색할 수 있도록
    - 다른 쿼리 내부에 중첩된 쿼리
    - 즉, 다른 쿼리 내부에 포함되어 있는 select문을 의미

  • 서브 쿼리의 분류

    	- 단일 행 서브 쿼리
    		- 서브 쿼리가 단일 행 비교 연산자와 함께 사용할 때는
    		- 서브쿼리의 결과 건수가 반드시 1건 이하여야 한다
      
    	- 다중 행 서브쿼리
    		- 서브쿼리의 결과가 2건 이상 반환될 수 있다면
    		- 반드시 다중 행 비교 연산자와 함께사용해야한다.
    		- 다중 행 비교 연산자!
      
    	- 다중 칼럼 서브쿼리
    		- 서브쿼리 결과오 여러 개의 컬럼이 반환되어 메인 쿼리의 조건과 동시 비교되는 것을 의미
      
    	- 연관 서브쿼리
    		- 서브 쿼리 내에 메인 쿼리 컬럼이 사용된 서브 쿼리
  • 이외에도
    - Having절에 사용

그렇다면 나의 문제점은 무엇인가

  • 일단 서브 쿼리를 굳이 사용하지 않아도 되는 부분에서 사용한다.
    - 이 문제는 위 내용들을 다시 잘 확인해보면 될 듯하다.

3번 문제

  • join을 사용했을때, 데이터가 중복이 생기는 경우는
  • left join을 사용했을때 발생할 수 있다.

이유를 살펴보면

  • left join을 사용하면 왼쪽 테이블을 기준으로

  • 오른쪽 테이블상에 연결된 정보가 있으면 칼럼을 가져오고

  • 없으면 null값으로 채워서 가져온다.

  • 이때, 왼쪽과 오른쪽 테이블을 연결하는 key값이

  • 오른쪽 테이블에 여러번 있으면 데이터 중복값이 생긴다.

해결방법

  • 애초에 테이블을 생성할때, 이런 일이 없도록 만들어야겠지만
  • 이미 만들었다면
  • group by나 다른 조건을 사용해서 중복값을 제거해주면 된다.
  • 아니면 DISTINCT 사용

4번 문제

  • 이거는 혼자서 해결방법을 찾는 것은 많은 어려움이 있는 것 같다.
  • 내가 이 문제를 생각하게 된 이유를 찾아서 정리한 후
  • 튜터님한테 찾아가자

1번 문제는 더 찾아보자

그리고 SQLD 강의와 시각화 정리를 조금하고 라이브 세션을 수강하였다

0개의 댓글