[Select 11~15] SQL 코딩테스트 고득점 Kit

강다겸·2025년 7월 20일
post-thumbnail

Programmers SQL 코딩테스트 고득점 Kit
SELECT 문제 11번부터 15번까지 정답 쿼리입니다.

11. 재구매가 일어난 상품과 회원 리스트 구하기 (LV2)
12. 모든 레코드 조회하기 (LV1)
13. 역순 정렬하기 (LV1)
14. 오프라인/온라인 판매 데이터 통합하기 (LV4)
15. 아픈 동물 찾기 (LV1)

11. 재구매가 일어난 상품과 회원 리스트 구하기 (LV2)

정답:

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

12. 모든 레코드 조회하기 (LV1)

정답:

SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

13. 역순 정렬하기 (LV1)

정답:

SELECT NAME
    ,  DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC

14. 오프라인/온라인 판매 데이터 통합하기 (LV4)

정답:

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 로 표시해주세요'는 그냥 함정이라는..)

15. 아픈 동물 찾기 (LV1)

정답:

SELECT ANIMAL_ID
    ,  NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID

0개의 댓글