SQL 고득점 Kit: 흉부외과 또는 일반외과 의사 목록 출력하기
Reference: https://school.programmers.co.kr/learn/courses/30/lessons/132203다음은 종합병원에 속한 의사 정보를 담은 DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_
Reference: https://school.programmers.co.kr/learn/courses/30/lessons/132203
문제 설명 ✅
다음은 종합병원에 속한 의사 정보를 담은 DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사 이름, 의사 ID, 면허번호, 고용 일자, 진료과 코드, 전화번호를 나타냅니다.
#### 테이블 구조
| Column name | Type | Nullable | | :-: | :-: | :-: | | DR_NAME | VARCHAR(20) | FALSE | | DR_ID | VARCHAR(10) | FALSE | | LCNS_NO | VARCHAR(30) | FALSE | | HIRE_YMD | DATE | FALSE | | MCDP_CD | VARCHAR(6) | TRUE | | TLNO | VARCHAR(50) | TRUE |
문제 ✅
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사 ID, 진료과, 고용 일자를 조회하는 SQL 문을 작성해 주세요. 이때 결과는 고용 일자를 기준으로 내림차순 정렬하고, 고용 일자가 같다면 이름을 기준으로 오름차순 정렬해 주세요.
예시 ✅
DOCTOR 테이블이 다음과 같을 때
| DR_NAME | DR_ID | LCNS_NO | HIRE_YMD | MCDP_CD | TLNO | | :-: | :-: | :-: | :-: | :-: | :-: | | 루피 | DR20090029 | LC00010001 | 2009-03-01 | CS | 01085482011 | | 패티 | DR20090001 | LC00010901 | 2009-07-01 | CS | 01085220122 | | 뽀로로 | DR20170123 | LC00091201 | 2017-03-01 | GS | 01034969210 | | 티거 | DR20100011 | LC00011201 | 2010-03-01 | NP | 01034229818 | | 품바 | DR20090231 | LC00011302 | 2015-11-01 | OS | 01049840278 | | 티몬 | DR20090112 | LC00011162 | 2010-03-01 | FM | 01094622190 | | 니모 | DR20200012 | LC00911162 | 2020-03-01 | CS | 01089483921 | | 오로라 | DR20100031 | LC00010327 | 2010-11-01 | OS | 01098428957 | | 자스민 | DR20100032 | LC00010192 | 2010-03-01 | GS | 01023981922 | | 벨 | DR20100039 | LC00010562 | 2010-07-01 | GS | 01058390758 |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
| DR_NAME | DR_ID | MCDP_CD | HIRE_YMD | | :-: | :-: | :-: | :-: | | 니모 | DR20200012 | CS | 2020-03-01 | | 뽀로로 | DR20170123 | GS | 2017-03-01 | | 벨 | DR20100039 | GS | 2010-07-01 | | 자스민 | DR20100032 | GS | 2010-03-01 | | 패티 | DR20090001 | CS | 2009-07-01 | | 루피 | DR20090029 | CS | 2009-03-01 |
⚠️ 날짜 포맷은 예시와 동일하게 나와야 합니다.
통과한 코드 ✅
SELECT
DR_NAME,
DR_ID,
MCDP_CD,
DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM
DOCTOR
WHERE
MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY
HIRE_YMD DESC,
DR_NAME ASC;보충 ✅
최근까지 학습한 내용을 복습해 보라고 배치한 문제가 아닐까 생각이 들 정도로 쉬운 문제였습니다. 다만, MCDP_CD = 'CS' OR MCDP_CD = 'GS' 부분을 개선하여 다음과 같이 코드를 작성할 수 있습니다.
SELECT
DR_NAME,
DR_ID,
MCDP_CD,
DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM
DOCTOR
WHERE
MCDP_CD IN ('CS', 'GS')
ORDER BY
HIRE_YMD DESC,
DR_NAME ASC;IN 연산자를 통해, 조건을 더 간결하고 읽기 쉽게 수정할 수 있습니다. 여러 개의 OR 조건을 하나로 묶어주는 역할을 하는 것이 IN 연산자라고 이해하시면 좋습니다.
More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계