코드카타/SQL

01.13 코드카타

경민212 2025. 1. 13. 20:53

* 특정 옵션이 포함된 자동차 리스트 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/157343

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성

결과는 자동차 ID를 기준으로 내림차순 정렬

 

정답

SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE ('%네비게이션%')
ORDER BY CAR_ID DESC
SELECT *
FROM car_rental_company_car
WHERE options REGEXP '네비게이션'
ORDER BY car_id DESC;

 

REGEXP 

  • 특정한 조건의 문자를 ‘검색’하거나 ‘치환’하는 과정을 매우 간편하게 처리할 수 있도록 해주는 수단
    • 해당 Pattern과 일치하는 문자열을 검색하는 것
    • 대상 문자열에 정규표현식을 적용해서 찾을 문자열을 검색해내는 것
더보기
--  '설' 또는 '유"가 포함된 문자열을 찾고 싶을 때

--  정규표현식을 사용하지 않을 때

SELECT *
FROM tbl -- table
WHERE data like '%설%'
OR data like '%유%'
;

--  정규표현식을 사용할 때

SELECT *
FROM tbl
WHERE data REGEXP '설|유'  -- 엔터키 위에 '|' 
;

https://velog.io/@syh0397/REGEXPRegular-Expression정규-표현식

 

 

* 조건에 부합하는 중고거래 상태 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/164672

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의

게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성

거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력

결과는 게시글 ID를 기준으로 내림차순 정렬

 

정답

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

 

 

* 취소되지 않은 진료 예약 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/132204

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

PATIENTDOCTOR 그리고 APPOINTMENT 테이블에서

2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성

진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성

결과는 진료예약일시를 기준으로 오름차순 정렬

 

내가 쓴 오답

SELECT A.APNT_NO, P.PT_NAME, P.PT_NO, D.MCDP_CD, D.DR_NAME, A.APNT_YMD
FROM APPOINTMENT A
INNER JOIN PATIENT P ON A.PT_NO = P.PT_NO
INNER JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID
WHERE (DATE_FORMAT([A.APNT_CNCL_YMD], '%Y-%m-%d') = '2022-04-13') AND (A.APNT_CNCL_YN = 'N') AND (A.MCDP_CD = 'CS')
ORDER BY A.APNT_YMD

 

정답

SELECT A.APNT_NO, P.PT_NAME, P.PT_NO, D.MCDP_CD, D.DR_NAME, A.APNT_YMD
FROM APPOINTMENT A
INNER JOIN PATIENT P ON A.PT_NO = P.PT_NO
INNER JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID
WHERE (DATE_FORMAT(A.APNT_YMD, '%Y-%m-%d') = '2022-04-13') AND (A.APNT_CNCL_YN = 'N') AND (A.MCDP_CD = 'CS')
ORDER BY A.APNT_YMD

ㅠㅠ 문제 잘 좀 읽자