SQL
JOIN 과 WINDOW FUNCTION
한우종
2024. 7. 3. 16:51
JOIN 의 기본 구조
JOIN 은 필요한 데이터가 서로다른 테이블에 있을때 조회할수 있게해준다.
주문가격은 테이블1에 있지만 주문고객은 테이블 2에 있을때 등등 여러가지 상황에서 사용할수있다.
JOIN의 종류는 2가지로
LEFT JOIN : 공통컬럼 을 기준으로 하나의 테이블에 값이 없더라도 모두 조회한다.
테이블 1 , 2 모두 "숫자" 라는 공통컬럼이 존재한다 가정한다.
기존데이터 == 조회결과
테이블1 에는 모든 데이터값이존재하지만 테이블2에는 데이터값이 빈곳이 존재하지만
숫자(테이블1) 숫자(테이블2) 1 1 2 2 3 NULL
결과값에는 빈칸을 포함한 모든 데이터를 조회할수있다.
INNER JOIN 공통컬럼을 기준으로 두 테이블 모두에 있는 값만 조회한다.
테이블 1,2 모두 "숫자" 라는 공통컬럼이 존재한다 가정한다.
기존데이터
▼
숫자(테이블1) 숫자(테이블2) 1 1 2 2 3 NULL
조회결과
숫자(테이블1) 숫자(테이블2) 1 1 2 2
숫자 테이블 1에는 1 2 3 이라는 데이터가 존재하지만 숫자 테이블 2에는 1 2 라는 값만 존재하기때문에
테이블1 과 테이블2 가 모두 가지고있는 1 2 의 값만 조회한다.
JOIN 기초문법
LEFT JOIN
SELECT
FROM 테이블 1(기준테이블) LEFT JOIN 테이블 2 ON 테이블1.공통컬럼 = 테이블2.공통컬럼
이처럼 테이블1.공통컬럼 = 테이블2.공통컬럼 으로 묶어주는데 조회할 컬럼을 불러올때
어느 테이블에서 가져올지 명시해준다.
테이블 . 컬럼(테이블 점 컬럼)
//
테이블에 별명을 지어줘도됨
SELECT A.컬럼1 , B.컬럼3
FROM 테이블1 A LEFT JOIN 테이블2 B ON A.컬럼= B.컬럼
//
또한 겹치는 결과를 제외하고싶을때는 컬럼앞에 DISTINCT 를 붙여준다.
SELECT DISTINCT A.컬럼
INNERJOIN
SELECT
FROM A INNER JOIN B ON A.공통컬럼 = B.공통컬럼
기본적인 구조는 LEFT JOIN 과 똑같다.
하지만 테이블 A 와 B에 공통적인값이 있는것만 조회한다.
WINDOW FUNCTION
윈도우 함수는 각 행의 관계를 정의하기 위한 함수이다.
그룹 내의 연산을 쉽게 만들어준다.
기본구조
<윈도우함수> OVER (PARTITION BY 그룹 기준컬럼 ORDER BY 정렬기준)
윈도우함수 : 기능명을 사용해준다 (AVG , SUM ,RANK() 등등)
OVER : 윈도우 함수 뒤에 따라붙는함수
PRATITION BY : 데이터를 그룹화할 기준 열을 지정한다.
ORDER BY : 결과를 정렬할 열을 지정한다.