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

+ Recent posts