[sql] DISTINCT를 이용한 중복 값을 제거하는 스칼라 함수

이번에는 SQL에서 중복 값을 제거하는 스칼라 함수를 작성하는 방법에 대해 알아보겠습니다.

중복 값 처리

SQL에서 데이터를 분석하다보면 종종 중복된 데이터가 발생할 수 있습니다. 이때 중복 값을 제거하여 원하는 결과를 얻기 위해 DISTINCT 키워드를 사용하는데, 스칼라 함수를 사용하여 이러한 중복 값을 제거할 수도 있습니다.

스칼라 함수 작성

우선, 중복 값을 제거하는 스칼라 함수를 작성하기 위해 아래와 같이 SQL 문을 작성할 수 있습니다.

CREATE FUNCTION removeDuplicates(inputArray ARRAY
, T
) 
RETURNS ARRAY
, T
AS 
'  
    SELECT ARRAY_AGG(DISTINCT val) 
    FROM UNNEST($1) val
' 
LANGUAGE SQL IMMUTABLE;

위의 코드는 inputArray에서 중복 값을 제거한 결과를 반환하는 removeDuplicates 스칼라 함수를 정의하고 있습니다. 함수 내부에서는 UNNEST 함수를 사용하여 배열의 요소를 풀어내고, DISTINCT를 통해 중복 값을 제거한 후에 ARRAY_AGG 함수를 사용하여 다시 배열로 묶어주고 있습니다.

사용 예제

이제 작성한 스칼라 함수를 사용해보겠습니다.

SELECT removeDuplicates(ARRAY[1, 2, 2, 3, 3, 4]);

위의 예제에서는 중복 값을 포함하는 배열을 removeDuplicates 함수에 전달하여 중복이 제거된 결과를 얻을 수 있습니다.

위와 같이 SQL에서 DISTINCT를 이용한 중복 값을 제거하는 스칼라 함수를 작성하고 활용할 수 있습니다.

참고 자료