Data/SQL
[SQL] 프로그래머스 코딩테스트 연습2
쿡국
2024. 2. 19. 23:57
문제1. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
출처 : 프로그래머스 SQL 고득점 kit - String, Date
문제 정보 : LEVEL 3 / 정답률 72%
https://school.programmers.co.kr/learn/courses/30/lessons/164673https://school.programmers.co.kr/learn/courses/30/lessons/164671
정답 쿼리
SELECT concat("/home/grep/src/",BOARD_ID,"/",FILE_ID,FILE_NAME,FILE_EXT) AS FILE_PATH
FROM USED_GOODS_FILE
WHERE BOARD_ID = (
SELECT BOARD_ID
FROM USED_GOODS_BOARD
GROUP BY BOARD_ID
ORDER BY VIEWS DESC
LIMIT 1 )
ORDER BY FILE_ID DESC
문제 해설
1. 주요 포인트 1 - concat 활용
SELECT CONCAT("/home/grep/src/",BOARD_ID,"/",FILE_ID,FILE_NAME,FILE_EXT) AS FILE_PATH
concat 함수를 이용해 각 열의 값들을 합쳐주기 (concat 말고 ‘+’로 합쳐볼까 했지만, 오류가 남.)
2. 주요 포인트 2 - where절 서브쿼리
WHERE BOARD_ID = (SELECT BOARD_ID
FROM USED_GOODS_BOARD
GROUP BY BOARD_ID
ORDER BY VIEWS DESC
LIMIT 1 )
문제 2. 오프라인/온라인 판매 데이터 통합하기
출처 : 프로그래머스 SQL 고득점 kit - SELECT
문제 정보 : LEVEL 4 / 정답률 62%
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 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. 주요 포인트 1 - union 활용
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%'
union - 중복 값 제외하고 합치기
union all - 중복 값 포함해서 합치기
2. null as user_id
주의 : ‘null’ as user_id로 입력할 경우 문자열 ‘null’로 인식되어 오답 처리 됨.