본문 바로가기
프로그래밍/SQL, Hive, SAS 관련 정보

[SQL - Frequently Used Code] 행 중복 제거

by 물박사의 저장공간 2024. 11. 3.

2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents


행의 중복을 제거하기 위한 방법

 

1. Distinct 사용

SELECT DISTINCT * 
FROM your_table;

 

select에 distinct만 붙여주면 중복을 제거해줍니다. 이제 distinct 뒤에 선택되는 column set에 대해 중복이 아닌 값들만 불러오라는 명령어입니다(물론 *를 이용해서 모든 칼럼을 선택하지 않고 일부 칼럼만 선택해도 동일하게 작동합니다). 하지만 리소스 관점에서 이러한 방식은 임시 tablespace에 데이터를 저장하고 진행하는 방식이라 로드가 걸릴 수 있는 방법입니다. 

주의) SELECT DISTINCT(*) 아니고 DISTINCT *입니다.

 

2. Group by 사용

SELECT *
FROM your_table
GROUP BY column1, column2, column3, ...;

 

3. Row_number 사용

SELECT *
FROM (
    SELECT 
        컬럼1, 컬럼2, -- 필요한 컬럼들
        ROW_NUMBER() OVER (PARTITION BY 중복기준컬럼 ORDER BY 정렬기준컬럼) AS rn
    FROM 테이블명
)
WHERE rn = 1; -- 첫 번째 행만 유지