[String, Date 7~12] SQL 코딩테스트 고득점 Kit

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

7. 자동차 대여 기록에서 장기/단기 대여 구분하기 (LV 1)
8. 조건에 맞는 사용자 정보 조회하기 (LV 3)
9. 조건에 부합하는 중고거래 상태 조회하기 (LV 2)
10. 취소되지 않은 진료 예약 조회하기 (LV 4)
11. 루시와 엘라 찾기 (LV 2)
12. 이름에 el이 들어가는 동물 찾기 (LV 2)

7. 자동차 대여 기록에서 장기/단기 대여 구분하기 (LV 1)

정답:

SELECT HISTORY_ID
    ,  CAR_ID
    ,  DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE
    ,  DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE
    ,  CASE WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '장기 대여'
            ELSE '단기 대여' END AS RENT_TYPE
  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
 WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
 ORDER
    BY HISTORY_ID DESC

8. 조건에 맞는 사용자 정보 조회하기 (LV 3)

정답:

WITH MORE_THAN_3POST AS(
    SELECT u.USER_ID
        ,  COUNT(b.WRITER_ID) AS CNT_POST
      FROM USED_GOODS_BOARD AS b
      JOIN USED_GOODS_USER AS u ON b.WRITER_ID = u.USER_ID
     GROUP
        BY u.USER_ID
    HAVING CNT_POST >= 3
)
SELECT USER_ID
    ,  NICKNAME
    ,  CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소'
    ,  CONCAT(SUBSTRING(TLNO, 1, 3), '-', SUBSTRING(TLNO, 4, 4), '-', SUBSTRING(TLNO, 8)) AS '전화번호'
  FROM USED_GOODS_USER
 WHERE USER_ID IN (SELECT USER_ID
                     FROM MORE_THAN_3POST)
 ORDER
    BY USER_ID DESC

전화번호 사이에 '-' 넣는 방법이 저것밖에 없으려나.. 🧐

9. 조건에 부합하는 중고거래 상태 조회하기 (LV 2)

정답:

SELECT BOARD_ID
    ,  WRITER_ID
    ,  TITLE
    ,  PRICE
    ,  CASE WHEN STATUS = 'SALE' THEN '판매중'
            WHEN STATUS = 'RESERVED' THEN '예약중'
            WHEN STATUS = 'DONE' THEN '거래완료'
        END AS STATUS
  FROM USED_GOODS_BOARD
 WHERE CREATED_DATE = '2022-10-05'
 ORDER
    BY BOARD_ID DESC

10. 취소되지 않은 진료 예약 조회하기 (LV 4)

정답:

SELECT a.APNT_NO
    ,  p.PT_NAME
    ,  p.PT_NO
    ,  a.MCDP_CD
    ,  d.DR_NAME
    ,  a.APNT_YMD
  FROM APPOINTMENT AS a
LEFT
  JOIN PATIENT AS p ON a.PT_NO = p.PT_NO
  JOIN DOCTOR AS d ON a.MDDR_ID = d.DR_ID
 WHERE a.APNT_YMD BETWEEN '2022-04-13 00:00:00' AND '2022-04-13 23:59:59'
   AND a.MCDP_CD = 'CS'
   AND a.APNT_CNCL_YN = 'N'
 ORDER
    BY a.APNT_YMD

11. 루시와 엘라 찾기 (LV 2)

정답:

SELECT ANIMAL_ID
    ,  NAME
    ,  SEX_UPON_INTAKE
  FROM ANIMAL_INS
 WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
 ORDER
    BY ANIMAL_ID

12. 이름에 el이 들어가는 동물 찾기 (LV 2)

정답:

SELECT ANIMAL_ID
    ,  NAME
  FROM ANIMAL_INS
 WHERE ANIMAL_TYPE = 'Dog'
   AND (NAME LIKE '%El%' OR NAME LIKE '%el%')
 ORDER
    BY NAME

0개의 댓글