본문 바로가기
Data Science/SQL

[SQL로 맛보는 데이터 전처리 분석] 기본 문법 정리 - 1

by 루크 Luke 2022. 7. 6.
반응형

* SELECT

- 분석가라면 가장 많이 사용하게 될 '조회'

SELECT [Column name], 
    [Column name], 
    ...
FROM [DB name].[Table name];

- GROUP BY 없이도 집계 함수 사용 가능함

- 모든 결과를 조회하려면 '*'를 사용한다. ex) SELECT * FROM TABLE

- 별칭을 붙여서 컬럼명을 변경 조회할 수 있다. ex) SELECT COLUMN AS A FROM TABLE

- 고유값을 보려면 DISTINCT 사용 ex) SELECT DISTINCT COLUMN FROM TABLE

- WHERE절을 조건절로 사용해서, 조회 조건을 다양하게 가져갈 수 있다.

WHERE 절에 쓸 수 있는 다양한 표현들
BETWEEN 특정 컬럼의 값이 시작점~끝점인 데이터만 출력
WHERE COLUMN BETWEEN A AND B
대소관계표현 = 동일하다, > 초과, >= 이상, < 미만, <= 이하, <> 같지 않다.
WHERE COLUMN < A
IN, NOT IN 특정 컬럼의 값이 IN 내부에 명시된 값인 데이터만 출력
WHERE COLUMN IN (A, B, ...)
IS NULL, IS NOT NULL 특정 값이 비어있는(NULL) 데이터를 출력
WHERE COLUMN IS NULL
LIKE '%TEXT%' 특정 텍스트가 포함된 데이터를 출력
WHERE COLUMN LIKE '%TEXT%' : TEXT 포함
WHERE COLUMN LIKE 'TEXT%' : TEXT로 시작
WHERE COLUMN LIKE '%TEXT' : TEXT로 끝

- GROUP BY는 컬럼의 값들을 그룹화해 각 값들의 평균값, 개수 등을 구할 때 사용

- GROUP BY는 AVG(), COUNT(), SUM(), MAX(), MIN() 등과 함께 쓸 수 있음

SELECT [Column Name], SUM([Column Name])
FROM [DB Name].[Table Name]
GROUP BY [Column Name]

- CASE WHEN +  집계함수 함께 사용 : 조건에 따라 집계 여부 결정

SELECT [Column Name], SUM(CASE WHEN [Column Name] = A THEN 1 ELSE 0 END) AS COLUMN_CNT
FROM [DB Name].[Table Name]

- JOIN : 여러 테이블로 나뉜 정보를 조합하기 위한 테이블 결합 함수

-- LEFT JOIN(LEFT OUTER JOIN)
SELECT *
FROM TABLE A
LEFT    JOIN TABLE B
ON TABLE A.Column 1 = TABLE B.Column 2

-- INNER JOIN
SELECT *
FROM TABLE A
INNER   JOIN TABLE B
ON TABLE A.Column 1 = TABLE B.Column 2

-- FULL JOIN
SELECT *
FROM TABLE A
FULL    JOIN TABLE B
ON TABLE A.Column 1 = TABLE B.Column 2

- RANK, DENSE_RANK, ROW_NUMBER를 활용해서 순위를 매길 수 있음

구분 설명 표현
ROW_NUMBER() 동점인 경우도 서로 다른 등수로 계산함 SELECT ROW_NUMBER() OVER(
    ORDER BY Column
    )
FROM ...

-- 해당 컬럼 내에서 순위를 매길 때
SELECT ROW_NUMBER() OVER(
    PARTITION BY Column
    ORDER BY Column
    )
FROM ...
RANK() 동점인 경우에 같은 등수로 계산함
데이터 세트를 고려해서 다음 등수 계산
SELECT RANK() OVER(
    ORDER BY Column
    )
FROM ...

-- 해당 컬럼 내에서 순위를 매길 때
SELECT RANK() OVER(
    PARTITION BY Column
    ORDER BY Column
    )
FROM ...
DENSE_RANK() 동점인 경우에 같은 등수로 계산함
동점이어도 다음 등수를 그 다음 숫자로
SELECT DENSE_RANK() OVER(
    ORDER BY Column
    )
FROM ...

-- 해당 컬럼 내에서 순위를 매길 때
SELECT DENSE_RANK() OVER(
    PARTITION BY Column
    ORDER BY Column
    )
FROM ...

 

반응형

댓글