Logo SQL Growth

문자열 집계(STRING_AGG)와 날짜 함수(DATE)

by DataMarvin
Dec 1, 2025
Views: 44
Illustrative Image

실무에서 자주 마주치는 데이터 집계 패턴

실무에서는 날짜별로 데이터를 그룹화하고, 여러 행에 걸쳐 있는 값을 하나의 문자열로 합쳐야 하는 경우가 종종 발생합니다. 예를 들어, “요일별 제품 목록을 보여주세요” 라는 요청을 받았을 때, 각 제품을 별도의 행으로 보여주는 것보다는 요일별로 모든 제품 명을 쉼표로 구분해서 요일마다 한 줄로 보여주는 것이 훨씬 읽기 쉽습니다.

이번 글에서는 이러한 패턴을 구현하느 핵심 개념들을 살펴보겠습니다.

데이터 집계 패턴과 관련된 문제와 관련된 문제 풀기: 문제링크

DATE 함수: TIMESTAMP에서 날짜만 추출하기

실무에서는 정확한 시간 정보를 저장하기 위해 TIMESTAMP 타입을 사용합니다. 하지만 분석 시에는 시간 단위가 아닌 날짜 단위로 데이터를 집계해야 하는 경우가 많습니다.

*- TIMESTAMP: 2021-01-15 10:30:00- DATE() 함수 적용 후: 2021-01-15

SELECT DATE(order_date) as sale_date FROM orders;`

DATE() 함수는 TIMESTAMP에서 시간 부분을 제거하고 날짜 부분만 추출합니다. 이를 GROUP BY와 함께 사용하면 날짜별로 데이터를 집계할 수 있습니다.

STRING_AGG: 여러 행을 하나의 문자열로 합치기

STRING_AGG는 여러 행의 문자열 값을 하나로 연결해주는 강력한 집계 함수입니다. 이는 GROUP BY와 함께 사용될 때 시너지가 납니다.

sql

- 기본 사용법

STRING_AGG(column_name, separator)

- 실제 예시

STRING_AGG(product_name, ', ')

- 결과: "Product A, Product B, Product C"

STRING_AGG 내부 정렬

STRING_AGG의 특별한 기능 중 하나는 함수 내부에서 정렬을 지정할 수 있다는 점입니다.

STRING_AGG(product_name, ', ' ORDER BY product_name)

이렇게 하면 문자열을 합치기 전에 알파벳 순으로 정렬되어, 일관되고 읽기 쉬운 결과를 얻을 수 있습니다.

GROUP BY와 집계 함수의 조합

날짜별로 데이터를 그룹화하려면 GROUP BY를 사용해야 합니다. 여기서 중요한 점은 SELECT 절에서 사용한 DATE() 함수와 동일한 표현식을 GROUP BY에도 사용해야 한다는 것입니다.

SELECT DATE(order_date) as sale_date, STRING_AGG(product_name, ', ' ORDER BY product_name) as product_list FROM orders JOIN products ON orders.product_id = products.product_id GROUP BY DATE(order_date) ORDER BY sale_date;`

JOIN: 여러 테이블의 정보 결합하기

실무에서는 정규화된 데이터베이스 구조를 사용하기 때문에 필요한 정보가 여러 테이블에 분산되어 있습니다. 주문 테이블에는 제품 ID만 있고, 실제 제품명은 제품 테이블에 있는 경우가 대표적입니다.

SELECT o.order_id, p.product_name FROM orders o JOIN products p ON o.product_id = p.product_id

이렇게 JOIN을 사용하면 주문 정보와 제품 정보를 함께 조회할 수 있습니다.

실전 문제로 연습해보세요

이러한 개념들을 모두 종합하면 날짜별로 판매된 제품 목록을 깔끔하게 정리할 수 있습니다.

SQLrom.com에서 실제 문제를 풀어보며 이 개념들을 마스터해보세요:

👉 날짜별 판매 제품 목록 조회 문제 풀러가기 문제링크

난이도: Medium | 예상 소요 시간: 10-15분 | 포인트: 150

이 문제를 통해 다음을 학습할 수 있습니다:

  • DATE 함수를 활용한 TIMESTAMP 처리
  • STRING_AGG를 사용한 문자열 집계
  • GROUP BY와 집계 함수의 실전 활용
  • JOIN을 통한 다중 테이블 조회
  • 정렬된 문자열 목록 생성 기법

More

Based on Tags

No related posts found based on the tags.

Recent Popular

Most Popular

  • SQL SELECT 가이드

    SQL SELECT 기초부터 실전 활용까지

    Illustrative Image
  • 데이터 분석을 위한 SQL 입문 - 왜 SQL부터 시작해야 할까?

    SQL이 첫번째 언어여야 하는 이유

    Illustrative Image
  • SQL로 전환 여부 파악하기

    클릭은 있지만 전환은 없는 셀러 찾기

    Illustrative Image