
Programmers SQL 코딩테스트 고득점 Kit
SELECT 문제 11번부터 15번까지 정답 쿼리입니다.
11. 재구매가 일어난 상품과 회원 리스트 구하기 (LV2)
12. 모든 레코드 조회하기 (LV1)
13. 역순 정렬하기 (LV1)
14. 오프라인/온라인 판매 데이터 통합하기 (LV4)
15. 아픈 동물 찾기 (LV1)
정답:
WITH BASE AS (
SELECT USER_ID
, PRODUCT_ID
, COUNT(DISTINCT SALES_DATE) AS CNT_SALE
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID)
SELECT USER_ID
, PRODUCT_ID
FROM BASE
WHERE CNT_SALE >= 2
ORDER BY USER_ID ASC, PRODUCT_ID DESC
정답:
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
정답:
SELECT NAME
, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
정답:
WITH BASE AS (
SELECT SALES_DATE
, PRODUCT_ID
, USER_ID
, SALES_AMOUNT
FROM ONLINE_SALE
UNION
SELECT SALES_DATE
, PRODUCT_ID
, NULL
, SALES_AMOUNT
FROM OFFLINE_SALE
)
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE
, PRODUCT_ID
, USER_ID
, SALES_AMOUNT
FROM BASE
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
의문점
- OFFLINE_SALES 에는 2022년 03월 데이터가 없음 (= 결국 'OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요'는 그냥 함정이라는..)
정답:
SELECT ANIMAL_ID
, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID