프로그래머스 링크: programmers.co.kr/learn/courses/30/parts/17047
코딩 테스트의 SQL 문제를 대비하기 위해 공부하며 정리한 글입니다.
1. 루시와 엘라 찾기
programmers.co.kr/learn/courses/30/lessons/59046
ANIMAL_INS 테이블 중, 동물 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하여 아이디 순으로 정렬하여 출력하는 문제.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
WHERE NAME = 'Lucy' or NAME = 'Ella' or ... 와 같은 식으로 써도 되지만 위와 같이 작성하는 것이 더 편합니다.
2. 이름에 el이 들어가는 동물 찾기
programmers.co.kr/learn/courses/30/lessons/59047
ANIMAL_INS 테이블 중, 동물 이름에 el이 들어가는 개의 아이디와 이름을 조회하여, 이름 순으로 정렬하여 출력하는 문제. 이 때 이름의 대소문자는 구분하지 않습니다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%EL%' and ANIMAL_TYPE = 'Dog'
ORDER BY NAME
LIKE '%문자열%' 을 이용하여 푸는 문제였습니다.
3. 중성화 여부 파악하기
programmers.co.kr/learn/courses/30/lessons/59409
ANIMAL_INS 테이블 중, 중성화가 되었는지 여부를 파악하여, 동물의 아이디와 이름, 중성화 여부를 O 또는 X로 나타내고, 아이디 순으로 정렬하여 출력하는 문제.
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE '%Neutered%' or SEX_UPON_INTAKE LIKE '%Spayed%'
THEN 'O' ELSE 'X' END
as '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
이 문제는 문자열 쪽에서 헷갈렸다기보다는, CASE를 활용하는 경우에 대한 예시라고 봐도 좋을 것 같습니다.
CASE 문을 열고 END로 닫습니다. 이 사이에서 WHEN을 통해 조건을 명시하고, 맞을 경우 THEN, 아닐 경우 ELSE를 통해 원하는 내용을 출력합니다.
1번 문제처럼 in ('문자열1', '문자열2',...)는 LIKE에서는 사용ㅇ할 수 없는 것 같습니다.
4. 오랜 기간 보호한 동물(2)
programmers.co.kr/learn/courses/30/lessons/59411
ANIMAL_INS와 ANIMAL_OUTS 테이블에서, 보호 기간이 가장 긴 두 마리의 동물의 아이디와 이름을, 보호 기간이 긴 순으로 정렬하여 출력하는 문제.
SELECT a.ANIMAL_ID, a.NAME
FROM ANIMAL_INS a LEFT JOIN ANIMAL_OUTS b on a.ANIMAL_ID = b.ANIMAL_ID
ORDER BY b.DATETIME - a.DATETIME DESC
LIMIT 2
JOIN을 함께 이용하는 문제입니다.
두 테이블 ANIMAL_INS와 ANIMAL_OUTS를 JOIN하고, 나간 시간 - 들어온 시간 을 내림차순으로 정렬하여 2개만 출력하도록 했습니다.
5. DATETIME에서 DATE로 변환
programmers.co.kr/learn/courses/30/lessons/59414
ANIMAL_INS 테이블로부터, 각 동물의 아이디와 이름, 들어온 날짜를 조회하여 아이디 순으로 정렬한 후 출력하는 문제. 들어온 날짜는 년-월-일 형식을 따릅니다.
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') as '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
DATE_FORMAT을 이용합니다. 이 때 사용되는 형식에는 '%Y' (4자리 연도), '%y' (2자리 연도), '%m' (월), '%d' (일), '%H' (24시간), '%h' (12시간) 등이 있습니다.
'알고리즘, 문제해결 > 알고리즘, 자료구조' 카테고리의 다른 글
세그먼트 트리 (0) | 2021.09.25 |
---|---|
C++의 auto에 대해 (0) | 2021.08.31 |
[SQL] JOIN (0) | 2021.03.11 |
[SQL] is Null (0) | 2021.03.11 |
[SQL] Group By (0) | 2021.03.10 |
댓글