Coding Test/SQL 연습 문제

프로그래머스/MySQL - SELECT 08. 오프라인/온라인 판매 데이터 통합하기

parkes811 2023. 1. 6. 22:05
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 문제 설명

 

  • 문제

 

  • 예시

 

  • 코드 및 문제 풀이
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'

UNION ALL

SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'

ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;

- UNION ALL을 사용해서 중복되는 레코드까지 모두 출력합니다.

- SELECT * 을 통해 데이터를 봤을 때 날짜 형식이 시간을 포함하고 있어 이 날짜 형식을 새로 정의하기 위해서

DATE_FORMAT()을 사용해 2022-00-00와 같은 형태로 출력했습니다.

- 문제에서 명시된 것 처럼 OFFLINE_SALE 테이블의 USER_ID는 NULL로 나타내기 위해 NULL AS USER_ID를 사용했습니다. 

- 2022년도 03월 달 매출만을 나타내기 위해 LIKE를 사용해 3월 달만 출력했습니다.

 

  • UNION과 패턴매칭 LIKE, DATE_FORMAT()

- UNION은 여러 개의 SELECT 문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용합니다.

이때 각각의 SELECT 문으로 선택된 필드의 개수와 타입은 모두 같아야 하며, 필드의 순서 또한 같아야 합니다.

 

- LIKE 연산자는 특정 패턴을 포함하는 데이터만을 검색하기 위해 사용합니다.

- 와일드카드(wildcard)란 문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호를 의미합니다.

 

- DATE_FORMAT(시간값, 원하는 포맷); 을 사용하면 날짜 정보를 원하는 포맷 형태로 출력할 수 있습니다.

- 포맷에 자세한 정보는 아래 링크를 참조하시면 됩니다.

https://www.w3schools.com/sql/func_mysql_date_format.asp

 

MySQL DATE_FORMAT() Function

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com