[SQL 문제 풀이] Group Sold Products By The Date (날짜별 그룹 판매 제품)

Stupefyee's avatar
May 13, 2025
[SQL 문제 풀이] Group Sold Products By The Date (날짜별 그룹 판매 제품)
notion image
각 날짜마다 판매된 다양한 제품의 수와 이름을 찾기 위한 해결책을 작성하세요. 각 날짜의 판매 제품 이름은 사전적으로 정렬해야 합니다. sell_date로 주문한 결과 테이블을 반환합니다.
 

내가 작성한 쿼리

Oracle

SELECT TO_CHAR(sell_date, 'YYYY-MM-DD') AS sell_date, COUNT(*) AS num_sold, LISTAGG(product, ',') WITHIN GROUP (ORDER BY product) AS products FROM ( SELECT DISTINCT sell_date, product FROM Activities ) GROUP BY sell_date;

MySQL

SELECT sell_date, count(DISTINCT product) num_sold, GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',') products FROM Activities GROUP BY sell_date;

차이점

  • 날짜 표기 방식 차이
  • 컬럼을 한줄로 합칠 때 사용하는 함수의 차이
    • Oracle
      • LISTAGG(컬럼, 구분자) WITHIN GROUP (ORDER BY 컬럼) 사용
      • 정렬 기준을 명확히 지정해야 함
      • 긴 문자열 합칠 경우 ORA-01489: result of string concatenation is too long 오류 발생 가능
    • MySQL
      • GROUP_CONCAT() 사용
      • SEPARATOR 키워드로 구분자 지정 가능
      • 기본 문자열 길이 제한 있음 (group_concat_max_len으로 조절 가능)
 
Share article

stupefyee