프로그래밍/DB관련 정보
[SQL - Frequently Used Code] 행 중복 제거
물박사의 저장공간
2024. 11. 3. 20:46
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; -- 첫 번째 행만 유지