리트코드(leetcode) 문제풀이 : Patients With a Condition (10/17)

백엔ㄷ현·2024년 10월 17일

Table: Patients

+--------------+---------+
| Column Name | Type |
+--------------+---------+
| patient_id | int |
| patient_name | varchar |
| conditions | varchar |
+--------------+---------+
patient_id is the primary key (column with unique values) for this table.
'conditions' contains 0 or more code separated by spaces.
This table contains information of the patients in the hospital.

Write a solution to find the patient_id, patient_name, and conditions of the patients who have Type I Diabetes. Type I Diabetes always starts with DIAB1 prefix.

Return the result table in any order.

The result format is in the following example.

Example 1:

Input:
Patients table:
+------------+--------------+--------------+
| patient_id | patient_name | conditions |
+------------+--------------+--------------+
| 1 | Daniel | YFEV COUGH |
| 2 | Alice | |
| 3 | Bob | DIAB100 MYOP |
| 4 | George | ACNE DIAB100 |
| 5 | Alain | DIAB201 |
+------------+--------------+--------------+
Output:
+------------+--------------+--------------+
| patient_id | patient_name | conditions |
+------------+--------------+--------------+
| 3 | Bob | DIAB100 MYOP |
| 4 | George | ACNE DIAB100 |
+------------+--------------+--------------+
Explanation: Bob and George both have a condition that starts with DIAB1.




타입 1 당뇨를 가진 사람만 조회하는 문제이다. 1타입 당뇨 환자는 항상 병명에 DIAB1 고정으로 붙어있다는 조건이 있다. 함정이 있는 문제이다.

처음에는 where 조건절 like 에 %DIAB1% 을 썼는데 patient_id = 5 Alain 의 병명이 DIAB201 이라서 조건에 부합했다. 공백을 포함하는 조건을 적는다는걸 처음에 생각하지 못하고 다른 방향으로 생각을 했었다. 방법은 아주 간단했다.

select patient_id
	,patient_name
    ,conditions
from patients
where conditions like "DIAB1%" or conditions like "% DIAB1%";
  • where 조건절 :
    첫 번째 조건은 DIAB1% 로 DIAB1 로 시작해서 뒷자리에는 아무 단어가 들어오게 만들었다.
    두 번째 or 조건으로 % DIAB1% 공백을 넣어줌으로써 George 와 Alain 이 요구사항에 맞게 분리가 되게 하였다.
profile
매일매일 공부한 내용과 코드 기록하겠습니다

0개의 댓글