Contents
내가 작성한 쿼리
각 날짜마다 판매된 다양한 제품의 수와 이름을 찾기 위한 해결책을 작성하세요. 각 날짜의 판매 제품 이름은 사전적으로 정렬해야 합니다. 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