우당탕탕 개발일지
[SQL] 프로그래머스 SELECT: 오프라인/온라인 판매 데이터 통합하기 본문
문제 링크
문제 설계
1. ONLINE_SALE과 OFFLINE_SALE 두 테이블의 정보를 세로로 합쳐야 하니까 UNION 사용
2. 날짜를 출력할 때 형식을 맞춰야 하니까 DATE_FORMAT(열이름, 형식 지정자)을 사용해야 한다.
이 문제에서 형식은 "2022-03-01"이니까 "%Y-%m-%d"가 형식 지정자가 된다.
3. OFFLINE_SALE 테이블에서 USER_ID 값은 NULL로 표시해야 하기 때문에 SELECT문에서 NULL AS USER_ID 사용해야 한다.
4. 2022년 3월의 판매 데이터를 가져오는 것이므로 WHERE SALES_DATE LIKE "2022-03%"라고 해야 한다.
5. 마지막 오름차순 정렬 잊지 말기!
SQL 코드
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
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
기억할 내용
1. 날짜 포맷을 나타내는 형식 지정자
- "%Y": 4자리 연도를 표시. 예를 들어, 2022, 2023 등의 형태로 표현.
- "%m": 2자리 월을 표시. 예를 들어, 01, 02, ..., 12 등의 형태로 표현.
- "%d": 2자리 일을 표시. 예를 들어, 01, 02, ..., 31 등의 형태로 표현.
- "%H": 24시간 형식의 시간을 표시(예: 00, 01, ..., 23).
- "%M": 분을 표시 (예: 00, 01, ..., 59).
- "%S": 초를 표시(예: 00, 01, ..., 59).
2. % 와일드카드 문자
- %ABC = ABC로 시작하는 모든 문자열과 일치하는 것을 의미
- ABC% = ABC로 끝나는 모든 문자열과 일치하는 것을 의미
3. 열이 특정 문자와 같을 때 =이 아니라 LIKE를 쓴다. WHERE SALES_DATE LIKE "2022-03%"
4. 열이 통째로 전부 NULL값일 때, NULL AS 열이름을 쓴다. NULL AS USER_ID
'SQL' 카테고리의 다른 글
[SQL] 프로그래머스 JOIN: 상품 별 오프라인 매출 구하기 (0) | 2024.02.08 |
---|---|
[SQL] 프로그래머스 SUM, MAX, MIN: 중복 제거하기 (1) | 2024.02.04 |
[SQL] 프로그래머스 JOIN: 주문량이 많은 아이스크림들 조회하기 (1) | 2024.02.04 |
[SQL] 프로그래머스 SELECT: 조건에 맞는 회원수 구하기 (0) | 2024.02.02 |
[SQL] 프로그래머스 SELECT: 상위 n개 레코드 (0) | 2024.02.02 |