[오라클] LISTAGG

해질녘·2023년 10월 30일
0

SQL

목록 보기
8/9

LIST-TAG 아니고 LIST-AGG (aggregation)

그룹바이랑 같이 쓰는 함수

메모: list to str 같은 느낌

예를 들어서 내가 날린 쿼리와 결과가 다음과 같다고 하자

  • 쿼리
    SELECT grade, name
    FROM students
    GROUP BY grade, name
    ORDER BY grade
  • 결과
    gradename
    AKIM
    ALEE
    APARK
    BCHOI
    CKANG

이때 등급이 A인 학생을 문자열 하나로 합쳐서 보여주고 싶다.

[KIM, LEE, PARK]

이런느낌으로

  • 쿼리
    SELECT 
    	grade,
    	LISTAGG(name, ', ') WITHIN GROUP(ORDER BY name ASC) AS names
    FROM students
    GROUP BY grade
  • 결과
    gradenames
    AKIM, LEE, PARK
    BCHOI
    CKANG

이런 결과가 나온다.

LISTAGG의 두번째로 들어가는 문자열이 값과 값 사이의 구분자가 된다.

이때 주의할 점은 GROUP BY가 있어야 한다는 거

그리고 자동으로 중복 제거가 되지 않는다. 어떻게 보면 리스트 값을 전부 문자열로 만드는거니까 당연하다고 볼 수 있다. names에 표출되는 항목에 중복이 없길 바란다면 추가적으로 처리해야 한다.

0개의 댓글