SQL Query

김태준·2024년 10월 10일
0

SQL

목록 보기
5/6
post-thumbnail

리트코드 SQL 문제 풀이

✅ 1667. Fix Names in a Table.

Users : user_id | name

Write a solution to fix the names so that only the first character is uppercase and the rest are lowercase.

Return the result table ordered by user_id.

SELECT
    user_id,
    CONCAT(UPPER(SUBSTR(name, 1, 1)), LOWER(SUBSTR(name, 2))) AS name
FROM Users
ORDER BY user_id;

이름의 첫 글자만 대문자, 나머지는 소문자로 표기하기.
방법은 다음과 같다.
SUBSTR()로 문자를 우선 구분해주고, 앞 첫 글자만 대문자 처리.
UPPER(SUBSTR(name, 1, 1))
이후 같은 함수를 활용하여 첫 글자를 제외한 나머지를 전부 소문자로 처리한다.
LOWER(SUBSTR(name, 2))

✅ 1527. Patients With a Condition

Patients : patient_id | patient_name | conditions

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.

SELECT *
FROM Patients
WHERE 
    conditions LIKE 'DIAB1%'
    OR conditions LIKE '% DIAB1%'

처음에는, DIAB1으로 시작하는 condition을 조회하는 줄 알고 LEFT함수를 썼으나, DIAB1으로 단어가 시작하는 것을 조회해야 했기에, 2가지 케이스를 두고 LIKE를 적용하였다.

✅ 196. Delete Duplicate Emails

Person : id | email

Write a solution to delete all duplicate emails, keeping only one unique email with the smallest id.

DELETE A
FROM Person AS A, Person AS B
WHERE A.email = B.email AND A.id > B.id

한 개의 테이블만 주어진 상황에서, 중복 처리를 위해 동일한 테이블을 2회 불러온다.

이후, A라는 테이블을 지우되, 다음 조건을 만족하는 경우에만 제거한다.

테이블 A와 테이블 B에서 email이 동일하고, 테이블 A의 id가 더 큰 경우 제거를 수행하여, email이 같은 상황에서 더 낮은 id만을 갖는 데이터를 냅둔다.

profile
To be a DataScientist

0개의 댓글