SQL

청년 CRM 101 SQL 스터디 디비디비딥 1주차 보고서 (240102)

GEEEEEEEE 2024. 1. 2. 19:56

<첫번째 문제>

 

 

 

문제 링크 :

 

프로그래머스 LV.1 흉부외과 또는 일반외과 의사 목록 출력하기

 

 

Table은 다음과 같습니다.

 

 

Column Name Type Nullable
DR_NAME VARCHAR(20) FALSE
DR_ID VARCHAR(20) FALSE
LCNS_NO VARCHAR(20) FALSE
HIRE_YMD DATE FALSE
MCDP_CD VARCHAR(6) TRUE
TLNO VARCHAR(50) TRUE

 

 

 

DR_NAME은 의사 이름

 

DR_ID는 의사 ID

 

LCNS_NO는 면허 번호

 

HIRE_YMD는 고용일

 

MCDP_CD는 진료과 코드

 

TLNO는 전화번호를 나타냅니다.

 

 

 

의사 이름, 의사 ID, 진료과, 고용일자를 조회해야 하는데

 

 

 

흉부외과(CS)이거나 일반외과(GS)에 속하고

 

 

 

고용일자를 기준으로 내림차순으로 정렬하고, 고용일자가 같다면

 

 

 

이름을 기준으로 오름차순으로 정렬해주세요.

 

 

 

먼저 조회해야 하는 목록들을 나열해줍시다.

 

 

 

SELECT DR_NAME, DR_ID, MCDP_CD, TO_CHAR(HIRE_YMD, 'YYYY-MM-DD') AS "HIRE_YMD"

 

 

 

고용일자는 "2020-03-01"과 같은 형식으로 보여줘야 하기때문에

 

 

 

TO_CHAR를 사용하여 변환해줍시다.

 

 

 

그리고 Table 이름인 DOCTOR를 FROM절에 적어줍시다.

 

 

 

FROM DOCTOR

 

 

흉부외과와 일반외과 의사만을 표기해줘야 하기때문에

 

 

 

WHERE절에서 조건을 제시해줍니다.

 

 

 

WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'

 

 

 

마지막으로 순서를 데이터를 보여주는 순서를 정해줘야 하는데,

 

 

 

 

우선되야 하는 기준이 고용일자이고. 그 다음에 고용일자가 같을 경우,

 

 

 

 

이름을 기준으로 오름차순으로 정렬하면 되니 다음과 같이

 

 

 

 

ORDER BY절에 적어주면 됩니다.

 

 

 

ORDER BY HIRE_YMD desc, DR_NAME

 

 

 

고용일을 내림차순으로 하는 기준을 먼저 적어준 후,

 

 

 

이름을 오름차순으로 하는 기준을 적어주면 됩니다.

 

 

 

여기서 오름차순은 생략이 가능하여 asc를 생략하였습니다.

 

 

 

모든 코드를 함께보면 다음과 같습니다.

 

 

SELECT DR_NAME, DR_ID, MCDP_CD, TO_CHAR(HIRE_YMD, 'YYYY-MM-DD') AS "HIRE_YMD"
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD desc, DR_NAME

 

 

 

 

 

<두번째 문제>

 

 

 

문제 링크 :

 

프로그래머스 SQL LV.1 조건에 맞는 도서 리스트 출력하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

BOOK 테이블은 다음과 같습니다

 

 

 

Column Name Type Nullable Description
BOOK_ID Integer FALSE 도서 ID
CATEGORY Varchar FALSE 카테고리(경제, 인문, 소설, 생활, 기술)
AUTHOR_ID Integer FALSE 저자 ID
PRICE Integer FALSE 판매가
PUBLISHED_DATE Date FALSE 출판일

 

 

출력해야 하는 조건은 다음과 같습니다.

 

 

 

ID와 출판일의 데이터를 보여줍니다. (SELECT)

 

 

 

BOOK 테이블에서 (FROM)

 

 

 

"인문" 카테고리에 속하면서 "2021년"에 출판된 (WHERE)

 

 

 

 

순서는 출판일을 기준으로 오름차순으로 정렬해주세요. (ORDER BY)

 

 

 

 

작성한 SQL 코드

 

 

 

날짜 데이터를 TO_CHAR를 통해 년도만 표기하게 변환한 후, 

 

 

 

2021과 같다는 조건을 설정하였습니다.

 

 

 

위와 같이 코드를 작성하였고, 결과는 다음과 같습니다.