71. 오프라인/온라인 판매 데이터 통합하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131537
정답 코드:
SELECT
DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3
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 YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
문제 풀이때 했던 생각.
| # 2022년 3월의 오프라인/온라인 상품 판매 데이터의 # 판매 날짜, 상품ID, 유저ID, 판매량 # OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시 # 판매일을 기준으로 오름차순 정렬, 상품 ID를 기준으로 오름차순, 유저 ID를 기준으로 오름차순 정렬 |
72. 조건에 부합하는 중고거래 댓글 조회하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/164673
정답 코드:
SELECT
ub.TITLE,
ub.BOARD_ID,
ur.REPLY_ID,
ur.WRITER_ID,
ur.CONTENTS,
DATE_FORMAT(ur.CREATED_DATE, "%Y-%m-%d") AS CREATED_DATE
FROM USED_GOODS_BOARD ub
INNER JOIN USED_GOODS_REPLY ur
on ub.BOARD_ID = ur.BOARD_ID
where YEAR(ub.CREATED_DATE) = 2022 and month(ub.CREATED_DATE) = 10
order by ur.CREATED_DATE ASC, ub.TITLE ASC
문제 풀이때 했던 생각.
| # 2022년 10월에 작성된 게시글 # 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회 # 댓글 작성일을 기준으로 오름차순 정렬, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬 |
73. 입양 시각 구하기(2)
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59413
정답 코드:
WITH RECURSIVE hours AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM hours
WHERE HOUR < 23
)
SELECT
h.HOUR,
COUNT(a.ANIMAL_ID) AS COUNT
FROM hours h
LEFT JOIN ANIMAL_OUTS a
ON h.HOUR = HOUR(a.DATETIME)
GROUP BY h.HOUR
ORDER BY h.HOUR;
문제 풀이때 했던 생각.
| # 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회 # 결과는 시간대 순으로 정렬 |
무엇이 잘못되었나?
SELECT HOUR(DATETIME) as HOUR, COUNT(*)
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
| 시간대별로 입양이 몇 건이나 발생했는지 조회할수 있었으나, 테이블 내에 있는 시간대만 조회가 가능했다. |
해결법
| 이 해결책에 대한 것을 알아보다 WITH RECURSIVE에 대해 알게되었고 SQL에서 자기 자신을 다시 참조하면서 데이터를 단계적으로 만들어내는 문법이란것을 알게되었다. 0~N 숫자 생성, 날짜 범위 생성하는데 있어서 유용하단것을 알게되었으나, 제대로된 사용법을 익히진 못했기 떄문에 SQL 공부내용에 추가 |
'E.코드카타 > Level 5' 카테고리의 다른 글
| 코드카타 Level.5 76 (0) | 2026.02.06 |
|---|---|
| 코드카타 Level.5 74, 75 (0) | 2026.02.05 |
| 코드카타 Level.5 68~70 (0) | 2026.01.19 |
