1. 이름이 있는 동물의 아이디
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59407
정답 코드:
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID ASC
문제 풀이때 했던 생각.
| # 이름이 있는 동물의 ID를 조회 # 단, ID는 오름차순 정렬 |
다른풀이
SELECT A.ANIMAL_ID
FROM ANIMAL_INS A
WHERE EXISTS (
SELECT 1
FROM ANIMAL_INS B
WHERE B.ANIMAL_ID = A.ANIMAL_ID
AND B.NAME IS NOT NULL
)
ORDER BY A.ANIMAL_ID
문제 풀이때 했던 생각.
| # 있고 없고의 유무를 파악하기 위해서 EXISTS절 사용 |
2. 역순 정렬하기
문제 링크:
정답 코드:
SELECT
NAME,
DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회 # 결과는 ANIMAL_ID 역순 (내림차순) |
3. 중복 제거하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59408
정답 코드:
SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL # 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 |
4. 동물의 아이디와 이름
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59403
정답 코드:
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 모든 동물의 아이디와 이름 # ANIMAL_ID순으로 조회 |
5. 동물 수 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59406
정답 코드:
SELECT COUNT(*)
FROM ANIMAL_INS
문제 풀이때 했던 생각.
| # 동물 보호소에 동물이 몇 마리 들어왔는지 조회 |
6. 동명 동물 수 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59041
정답 코드:
SELECT
NAME,
COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >=2
ORDER BY NAME ASC;
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회 # 이때 결과는 이름이 없는 동물은 집계에서 제외 # 결과는 이름 순으로 조회 |
7. 아픈 동물 찾기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59036#fn1
정답 코드:
SELECT
ANIMAL_ID,
NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "Sick"
ORDER BY ANIMAL_ID ASC
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 동물 중 아픈 동물 # 아이디와 이름을 조회 # 결과는 아이디 순 |
8. 상위 N개 레코드
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59405
정답 코드:
SELECT
NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1
문제 풀이때 했던 생각
| # 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회 |
다른 풀이
SELECT NAME
FROM (
SELECT
NAME,
ROW_NUMBER() OVER (ORDER BY DATETIME ASC) AS rn
FROM ANIMAL_INS
) t
WHERE rn = 1;
문제 풀이때 했던 생각
| 윈도우 랭크 함수를 사용해 풀이 |
9. 문제번호및이름
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59038
정답 코드:
SELECT
MIN(DATETIME) AS "시간"
FROM ANIMAL_INS
문제 풀이때 했던 생각.
| # 동물 보호소에 가장 먼저 들어온 동물 |
다른 풀이
SELECT
DATETIME AS "시간"
FROM ANIMAL_INS
WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS)
문제 풀이때 했던 생각.
| # WHERE 절 서브쿼리. 단일값을 원하기 때문에 = 사용 |
10. 어린 동물 찾기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59037#fn1
정답 코드:
SELECT
ANIMAL_ID,
NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged'
ORDER BY ANIMAL_ID ASC
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회 # 결과는 아이디 순 |
47. 모든 레코드 조회하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59034
정답 코드:
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC
문제 풀이때 했던 생각.
| # 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회 |
54.최댓값 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59415
정답 코드:
SELECT MAX(DATETIME) AS '시간'
FROM ANIMAL_INS
문제 풀이때 했던 생각.
| max를 사용해 가장 최근 시각 구하기 |
다른 풀이
# RANK 함수
SELECT DATETIME AS "시간"
FROM (
SELECT
DATETIME,
ROW_NUMBER() OVER (ORDER BY DATETIME DESC) AS rn
FROM ANIMAL_INS
) t
WHERE rn = 1;
문제 풀이때 했던 생각
| 랭크 함수를 사용. 내림차순으로 해 가장 최근에 들어온 날짜를 구함 |
56. 특정 옵션이 포함된 자동차 리스트 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/157343
정답 코드:
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE "%네비게이션%"
ORDER BY CAR_ID DESC
문제 풀이때 했던 생각.
| WHERE 절로 OPTIONS에 "네비게이션"이 들어간 행을 찾고 찾은 행을 CAR_ID순으로 내림차순 |
다른 풀이
WITH SEARCHING AS (
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE "%네비게이션%"
)
SELECT *
FROM SEARCHING
ORDER BY CAR_ID DESC
문제 풀이때 했던 생각
| FROM 서브쿼리로 미리 임시 테이블로 값을 찾은 뒤 실행 CTE를 사용해 가독성을 높임 |
'E.코드카타 > 코드카타 Level 1~2' 카테고리의 다른 글
| 코드카타 Level 2 다시 풀어보기 (1) | 2026.01.14 |
|---|---|
| 코드카타 Level 1 47, 54, 56 (0) | 2026.01.09 |
| 코드카타 Level 2 16~20 (0) | 2026.01.02 |
| 코드카타 Level 2 1~15 (0) | 2025.12.31 |
| 어린 동물 찾기 (0) | 2025.12.30 |
