01.13 코드카타
* 특정 옵션이 포함된 자동차 리스트 구하기
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://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
PATIENT, DOCTOR 그리고 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
ㅠㅠ 문제 잘 좀 읽자