Skip to content

Commit a56a692

Browse files
committed
[level 4] Title: 취소되지 않은 진료 예약 조회하기, Time: 0.00 ms, Memory: 0.0 MB -BaekjoonHub
1 parent 4678fac commit a56a692

File tree

2 files changed

+365
-0
lines changed

2 files changed

+365
-0
lines changed
Lines changed: 350 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,350 @@
1+
# [level 4] 취소되지 않은 진료 예약 조회하기 - 132204
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/132204)
4+
5+
### 성능 요약
6+
7+
메모리: 0.0 MB, 시간: 0.00 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > String, Date
12+
13+
### 채점결과
14+
15+
Empty
16+
17+
### 제출 일자
18+
19+
2025년 11월 11일 09:30:44
20+
21+
### 문제 설명
22+
23+
<p>다음은 환자 정보를 담은 <code>PATIENT</code> 테이블과 의사 정보를 담은 <code>DOCTOR</code> 테이블, 그리고 진료 예약목록을 담은 <code>APPOINTMENT</code>에 대한 테이블입니다. <code>PATIENT</code> 테이블은 다음과 같으며 <code>PT_NO</code>, <code>PT_NAME</code>, <code>GEND_CD</code>, <code>AGE</code>, <code>TLNO</code>는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.</p>
24+
<table class="table">
25+
<thead><tr>
26+
<th>Column name</th>
27+
<th>Type</th>
28+
<th>Nullable</th>
29+
</tr>
30+
</thead>
31+
<tbody><tr>
32+
<td>PT_NO</td>
33+
<td>VARCHAR(N)</td>
34+
<td>FALSE</td>
35+
</tr>
36+
<tr>
37+
<td>PT_NAME</td>
38+
<td>VARCHAR(N)</td>
39+
<td>FALSE</td>
40+
</tr>
41+
<tr>
42+
<td>GEND_CD</td>
43+
<td>VARCHAR(N)</td>
44+
<td>FALSE</td>
45+
</tr>
46+
<tr>
47+
<td>AGE</td>
48+
<td>INTEGER</td>
49+
<td>FALSE</td>
50+
</tr>
51+
<tr>
52+
<td>TLNO</td>
53+
<td>VARCHAR(N)</td>
54+
<td>TRUE</td>
55+
</tr>
56+
</tbody>
57+
</table>
58+
<p><code>DOCTOR</code> 테이블은 다음과 같으며 <code>DR_NAME</code>, <code>DR_ID</code>, <code>LCNS_NO</code>, <code>HIRE_YMD</code>, <code>MCDP_CD</code>, <code>TLNO</code>는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.</p>
59+
<table class="table">
60+
<thead><tr>
61+
<th>Column name</th>
62+
<th>Type</th>
63+
<th>Nullable</th>
64+
</tr>
65+
</thead>
66+
<tbody><tr>
67+
<td>DR_NAME</td>
68+
<td>VARCHAR(N)</td>
69+
<td>FALSE</td>
70+
</tr>
71+
<tr>
72+
<td>DR_ID</td>
73+
<td>VARCHAR(N)</td>
74+
<td>FALSE</td>
75+
</tr>
76+
<tr>
77+
<td>LCNS_NO</td>
78+
<td>VARCHAR(N)</td>
79+
<td>FALSE</td>
80+
</tr>
81+
<tr>
82+
<td>HIRE_YMD</td>
83+
<td>DATE</td>
84+
<td>FALSE</td>
85+
</tr>
86+
<tr>
87+
<td>MCDP_CD</td>
88+
<td>VARCHAR(N)</td>
89+
<td>TRUE</td>
90+
</tr>
91+
<tr>
92+
<td>TLNO</td>
93+
<td>VARCHAR(N)</td>
94+
<td>TRUE</td>
95+
</tr>
96+
</tbody>
97+
</table>
98+
<p><code>APPOINTMENT</code> 테이블은 다음과 같으며 <code>APNT_YMD</code>, <code>APNT_NO</code>, <code>PT_NO</code>, <code>MCDP_CD</code>, <code>MDDR_ID</code>, <code>APNT_CNCL_YN</code>, <code>APNT_CNCL_YMD</code>는 각각 진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜를 나타냅니다.</p>
99+
<table class="table">
100+
<thead><tr>
101+
<th>Column name</th>
102+
<th>Type</th>
103+
<th>Nullable</th>
104+
</tr>
105+
</thead>
106+
<tbody><tr>
107+
<td>APNT_YMD</td>
108+
<td>TIMESTAMP</td>
109+
<td>FALSE</td>
110+
</tr>
111+
<tr>
112+
<td>APNT_NO</td>
113+
<td>INTEGER</td>
114+
<td>FALSE</td>
115+
</tr>
116+
<tr>
117+
<td>PT_NO</td>
118+
<td>VARCHAR(N)</td>
119+
<td>FALSE</td>
120+
</tr>
121+
<tr>
122+
<td>MCDP_CD</td>
123+
<td>VARCHAR(N)</td>
124+
<td>FALSE</td>
125+
</tr>
126+
<tr>
127+
<td>MDDR_ID</td>
128+
<td>VARCHAR(N)</td>
129+
<td>FALSE</td>
130+
</tr>
131+
<tr>
132+
<td>APNT_CNCL_YN</td>
133+
<td>VARCHAR(N)</td>
134+
<td>TRUE</td>
135+
</tr>
136+
<tr>
137+
<td>APNT_CNCL_YMD</td>
138+
<td>DATE</td>
139+
<td>TRUE</td>
140+
</tr>
141+
</tbody>
142+
</table>
143+
<hr>
144+
145+
<h5>문제</h5>
146+
147+
<p><code>PATIENT</code>, <code>DOCTOR</code> 그리고 <code>APPOINTMENT</code> 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.</p>
148+
149+
<hr>
150+
151+
<h5>예시</h5>
152+
153+
<p><code>PATIENT</code> 테이블이 다음과 같고,</p>
154+
<table class="table">
155+
<thead><tr>
156+
<th>PT_NO</th>
157+
<th>PT_NAME</th>
158+
<th>GEND_CD</th>
159+
<th>AGE</th>
160+
<th>TLNO</th>
161+
</tr>
162+
</thead>
163+
<tbody><tr>
164+
<td>PT22000019</td>
165+
<td>바라</td>
166+
<td>W</td>
167+
<td>10</td>
168+
<td>01079068799</td>
169+
</tr>
170+
<tr>
171+
<td>PT22000043</td>
172+
<td>오스왈드</td>
173+
<td>M</td>
174+
<td>68</td>
175+
<td>01031294124</td>
176+
</tr>
177+
<tr>
178+
<td>PT22000052</td>
179+
<td>제니</td>
180+
<td>W</td>
181+
<td>60</td>
182+
<td>NULL</td>
183+
</tr>
184+
<tr>
185+
<td>PT22000071</td>
186+
<td>몬몬</td>
187+
<td>M</td>
188+
<td>31</td>
189+
<td>01076489209</td>
190+
</tr>
191+
<tr>
192+
<td>PT22000097</td>
193+
<td>슈가</td>
194+
<td>M</td>
195+
<td>19</td>
196+
<td>NULL</td>
197+
</tr>
198+
</tbody>
199+
</table>
200+
<p><code>DOCTOR</code> 테이블이 다음과 같고,</p>
201+
<table class="table">
202+
<thead><tr>
203+
<th>DR_NAME</th>
204+
<th>DR_ID</th>
205+
<th>LCNS_NO</th>
206+
<th>HIRE_YMD</th>
207+
<th>MCDP_CD</th>
208+
<th>TLNO</th>
209+
</tr>
210+
</thead>
211+
<tbody><tr>
212+
<td>루피</td>
213+
<td>DR20090029</td>
214+
<td>LC00010001</td>
215+
<td>2009-03-01</td>
216+
<td>CS</td>
217+
<td>01085482011</td>
218+
</tr>
219+
<tr>
220+
<td>니모</td>
221+
<td>DR20200012</td>
222+
<td>LC00911162</td>
223+
<td>2020-03-01</td>
224+
<td>CS</td>
225+
<td>01089483921</td>
226+
</tr>
227+
<tr>
228+
<td>핑크퐁</td>
229+
<td>DR20140011</td>
230+
<td>LC00082201</td>
231+
<td>2014-03-01</td>
232+
<td>NP</td>
233+
<td>01098428957</td>
234+
</tr>
235+
<tr>
236+
<td>젤라비</td>
237+
<td>DR20160031</td>
238+
<td>LC00340327</td>
239+
<td>2016-11-01</td>
240+
<td>OB</td>
241+
<td>01023981922</td>
242+
</tr>
243+
<tr>
244+
<td>토리</td>
245+
<td>DR20190129</td>
246+
<td>LC00099911</td>
247+
<td>2019-03-01</td>
248+
<td>NS</td>
249+
<td>01058390758</td>
250+
</tr>
251+
</tbody>
252+
</table>
253+
<p><code>APPOINTMENT</code> 테이블이 다음과 같을 때,</p>
254+
<table class="table">
255+
<thead><tr>
256+
<th>APNT_YMD</th>
257+
<th>APNT_NO</th>
258+
<th>PT_NO</th>
259+
<th>MCDP_CD</th>
260+
<th>MDDR_ID</th>
261+
<th>APNT_CNCL_YN</th>
262+
<th>APNT_CNCL_YMD</th>
263+
</tr>
264+
</thead>
265+
<tbody><tr>
266+
<td>2022-04-13 12:30:00.000000</td>
267+
<td>42</td>
268+
<td>PT22000071</td>
269+
<td>CS</td>
270+
<td>DR20090029</td>
271+
<td>N</td>
272+
<td>NULL</td>
273+
</tr>
274+
<tr>
275+
<td>2022-04-13 15:30:00.000000</td>
276+
<td>43</td>
277+
<td>PT22000019</td>
278+
<td>CS</td>
279+
<td>DR20200012</td>
280+
<td>N</td>
281+
<td>NULL</td>
282+
</tr>
283+
<tr>
284+
<td>2022-04-13 09:00:00.000000</td>
285+
<td>46</td>
286+
<td>PT22000043</td>
287+
<td>CS</td>
288+
<td>DR20090029</td>
289+
<td>N</td>
290+
<td>NULL</td>
291+
</tr>
292+
<tr>
293+
<td>2022-07-09 11:00:00.000000</td>
294+
<td>74</td>
295+
<td>PT22000042</td>
296+
<td>NP</td>
297+
<td>DR20100011</td>
298+
<td>N</td>
299+
<td>NULL</td>
300+
</tr>
301+
<tr>
302+
<td>2022-12-13 12:30:00.000000</td>
303+
<td>110</td>
304+
<td>PT22000097</td>
305+
<td>NP</td>
306+
<td>DR20160011</td>
307+
<td>Y</td>
308+
<td>2022-12-03</td>
309+
</tr>
310+
</tbody>
311+
</table>
312+
<p>SQL을 실행하면 다음과 같이 출력되어야 합니다.</p>
313+
<table class="table">
314+
<thead><tr>
315+
<th>APNT_NO</th>
316+
<th>PT_NAME</th>
317+
<th>PT_NO</th>
318+
<th>MCDP_CD</th>
319+
<th>DR_NAME</th>
320+
<th>APNT_YMD</th>
321+
</tr>
322+
</thead>
323+
<tbody><tr>
324+
<td>46</td>
325+
<td>오스왈드</td>
326+
<td>PT22000043</td>
327+
<td>CS</td>
328+
<td>루피</td>
329+
<td>2022-04-13 09:00:00.000000</td>
330+
</tr>
331+
<tr>
332+
<td>42</td>
333+
<td>몬몬</td>
334+
<td>PT22000071</td>
335+
<td>CS</td>
336+
<td>루피</td>
337+
<td>2022-04-13 12:30:00.000000</td>
338+
</tr>
339+
<tr>
340+
<td>43</td>
341+
<td>바라</td>
342+
<td>PT22000019</td>
343+
<td>CS</td>
344+
<td>니모</td>
345+
<td>2022-04-13 15:30:00.000000</td>
346+
</tr>
347+
</tbody>
348+
</table>
349+
350+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- 코드를 입력하세요
2+
SELECT
3+
AP.APNT_NO,
4+
PAT.PT_NAME,
5+
PAT.PT_NO,
6+
DOC.MCDP_CD,
7+
DOC.DR_NAME,
8+
AP.APNT_YMD
9+
FROM APPOINTMENT AS AP
10+
JOIN DOCTOR AS DOC
11+
ON DOC.DR_ID = AP.MDDR_ID
12+
JOIN PATIENT AS PAT
13+
ON PAT.PT_NO = AP.PT_NO
14+
WHERE AP.APNT_CNCL_YN = 'N' AND AP.MCDP_CD = 'CS' AND AP.APNT_YMD LIKE '2022-04-13%'
15+
ORDER BY AP.APNT_YMD;

0 commit comments

Comments
 (0)