11. 여러 기준으로 정렬하기

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/59404

정답 코드:

SELECT 
    ANIMAL_ID, 
    NAME, 
    DATETIME
FROM ANIMAL_INS 
ORDER BY NAME ASC, DATETIME DESC

 

문제 풀이때 했던 생각

# 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일
# 이름 순으로 조회,  이름이 같은 동물 중에서는 보호를 나중에 시작한 동물

 


12. 이름에 el이 들어가는 동물 찾기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59047

정답 코드:

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS 
WHERE NAME LIKE "%EL%" AND  ANIMAL_TYPE = 'Dog'
ORDER BY NAME ASC

 

문제 풀이때 했던 생각

# 이름에 "EL"이 들어가는 개
# 아이디와 이름을 조회
# 결과는 이름 순으로 조회


다른 풀이

SELECT ANIMAL_ID, NAME
FROM (
    SELECT ANIMAL_ID, NAME
    FROM ANIMAL_INS
    WHERE NAME LIKE '%EL%'
      AND ANIMAL_TYPE = 'Dog'
) t
ORDER BY NAME ASC;

문제 풀이때 했던 생각

FROM절 서브쿼리를 이용해 문제 풀이

 


13. 나이 정보가 없는 회원 수 구하기 

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131528

정답 코드:

SELECT COUNT(*) AS "USERS"
FROM USER_INFO 
WHERE AGE IS NULL

문제 풀이때 했던 생각

# 나이 정보가 없는 회원이 몇 명인지 출력
# 컬럼명은 USERS

 


14. 가장 비싼 상품 구하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131697

정답 코드:

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

문제 풀이때 했던 생각

# 판매 중인 상품 중 가장 높은 판매가
# 컬럼명은 MAX_PRICE

 


15. NULL 처리하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59410

정답 코드:

SELECT
    ANIMAL_TYPE,
    COALESCE(NAME, "No name") AS NAME,
    SEX_UPON_INTAKE
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID

문제 풀이때 했던 생각

# 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회
# 이름이 없는 동물의 이름은 "No name"으로 표시

 


16. 경기도에 위치한 식품창고 목록 출력하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131114

정답 코드:

SELECT
    WAREHOUSE_ID,
    WAREHOUSE_NAME,
    ADDRESS,
    COALESCE(FREEZER_YN, "N")
FROM FOOD_WAREHOUSE 
WHERE ADDRESS LIKE "경기도%"

 

문제 풀이때 했던 생각

# 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회
# 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력
# 과는 창고 ID를 기준으로 오름차순 정렬

 


17. 강원도에 위치한 생산공장 목록 출력하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131112

정답 코드:

SELECT
    FACTORY_ID,
    FACTORY_NAME,
    ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE "강원도%"
ORDER BY FACTORY_ID ASC;

문제 풀이때 했던 생각

# 강원도에 위치한 식품공장의 공장 
# 공장의 ID, 공장 이름, 주소를 조회
# 공장 ID를 기준으로 오름차순 정렬

 


 

18. DATETIME에서 DATE로 형 변환

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/59414

정답 코드:

SELECT
    ANIMAL_ID,
    NAME,
    DATE_FORMAT(DATETIME, "%Y-%m-%d") AS "날짜"
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID ASC

문제 풀이때 했던 생각

# 각 동물의 아이디와 이름, 들어온 날짜를 조회
# 결과는 아이디 순으로 조회

 


19. 흉부외과 또는 일반외과 의사 목록 출력하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/132203

정답 코드:

SELECT
    DR_NAME,
    DR_ID,
    MCDP_CD,
    DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS 'HIRE_YMD'
FROM DOCTOR 
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC

 

문제 풀이때 했던 생각

# 진료과가 흉부외과(CS)이거나 일반외과(GS)
# 의사의 이름, 의사ID, 진료과, 고용일자를 조회
# 고용일자를 기준으로 내림차순 정렬, 이름을 기준으로 오름차순 정렬

 


20. 가격이 제일 비싼 식품의 정보 출력하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131115

정답 코드:

SELECT 
        PRODUCT_ID,
        PRODUCT_NAME,
        PRODUCT_CD,
        CATEGORY,
        PRICE
FROM FOOD_PRODUCT 
ORDER BY PRICE DESC
LIMIT 1

 

문제 풀이때 했던 생각

# 가격이 제일 비싼 식품의 식품
# 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회


다른 풀이1

SELECT 
        PRODUCT_ID,
        PRODUCT_NAME,
        PRODUCT_CD,
        CATEGORY,
        PRICE
FROM FOOD_PRODUCT 
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
ORDER BY PRICE DESC

문제 풀이때 했던 생각

단일값 WHERE 절 서브쿼리로 PRICE의 최대값을 구함

다른 풀이 2

SELECT  
        PRODUCT_ID,
        PRODUCT_NAME,
        PRODUCT_CD,
        CATEGORY,
        PRICE
FROM(
SELECT 
        PRODUCT_ID,
        PRODUCT_NAME,
        PRODUCT_CD,
        CATEGORY,
        PRICE,
        ROW_NUMBER() OVER (ORDER BY PRICE DESC) AS rn
FROM FOOD_PRODUCT 
) AS t
WHERE rn = 1

문제 풀이때 했던 생각

랭크 함수를 이용해 PRICE값이 제일 큰 값을 가져옴

21. 이름이 없는 동물의 아이디

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/59039

정답 코드:

SELECT ANIMAL_ID
FROM ANIMAL_INS 
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC;

문제 풀이때 했던 생각

# 이름이 없는 채로 들어온 동물의 ID를 조회
# ID는 오름차순 정렬

 


 

 

 

22. 조건에 맞는 회원수 구하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131535

정답 코드:

SELECT COUNT(*)
FROM USER_INFO 
WHERE YEAR(JOINED) = 2021
    AND AGE >= 20 
    AND AGE <= 29

 

문제 풀이때 했던 생각

# 테이블에서 2021년에 가입한 회원 중
# 나이가 20세 이상 29세 이하인 회원

 


23. 중성화 여부 파악하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59409

정답 코드:

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 ASC

문제 풀이때 했던 생각

# 동물의 아이디와 이름, 중성화 여부
# 중성화가 되어있다면 'O', 아니라면 'X'
# 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라 기입
# 아이디 순으로 조회

 


24. 카테고리 별 상품 개수 구하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131529

정답 코드:

SELECT 
    SUBSTRING(PRODUCT_CODE, 1, 2) AS CATEGORY ,
    COUNT(*)
FROM PRODUCT 
GROUP BY CATEGORY
ORDER BY PRODUCT_CODE ASC

문제 풀이때 했던 생각

# 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력
# 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬

 


25. 고양이와 개는 몇 마리 있을까

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/59040

정답 코드:

SELECT 
    ANIMAL_TYPE,
    COUNT(*) AS "count"
FROM ANIMAL_INS 
WHERE ANIMAL_TYPE IN ('DOG', 'CAT')
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE ASC

 

문제 풀이때 했던 생각

# 고양이와 개가 각각 몇 마리인지 조회
# 고양이를 개보다 먼저 조회

 


26. 입양 시각 구하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/59412

정답 코드: 

SELECT
        HOUR(DATETIME) AS HOUR,
        count(*) as COUNT
FROM ANIMAL_OUTS 
GROUP BY HOUR
HAVING HOUR >= 9 and HOUR <20
ORDER BY HOUR;

문제 풀이때 했던 생각

# 09:00부터 19:59까지 각 시간대별로 입양이 몇 건이나 발생했는지 조회
# 이때 결과는 시간대 순으로 정렬

 


 

 

27. 진료과별 총 예약 횟수 출력하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/132202

정답 코드:

SELECT 
        MCDP_CD AS '진료과 코드',
        COUNT(*) AS '5월예약건수'
FROM APPOINTMENT 
WHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05'
GROUP BY MCDP_CD
ORDER BY COUNT(*) ASC,  MCDP_CD ASC

문제 풀이때 했던 생각

# 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회
# 컬럼명은 '진료과 코드', '5월예약건수'로 지정
# 진료과별 예약한 환자 수를 기준으로 오름차순 정렬, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬

다른풀이

SELECT
    MCDP_CD AS '진료과 코드',
    COUNT(*) AS '5월예약건수'
FROM APPOINTMENT 
WHERE YEAR(APNT_YMD) = 2022
    AND MONTH(APNT_YMD) = 05
GROUP BY MCDP_CD
ORDER BY COUNT(*) ASC,  MCDP_CD ASC

문제 풀이때 했던 생각

날자 추출 함수를 사용해 출력

 

28. 12세 이하인 여자 환자 목록 출력하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/132201

정답 코드:

SELECT 
    PT_NAME, 	
    PT_NO,
    GEND_CD,
    AGE,
    COALESCE(TLNO, 'NONE')
FROM PATIENT 
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC

문제 풀이때 했던 생각

# 12세 이하인 여자환자
# 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회
# 전화번호가 없는 경우, 'NONE'으로 출력
# 결과는 나이를 기준으로 내림차순 정렬, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 


 

 

29. 인기있는 아이스크림

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/133024

정답 코드:

SELECT
       FLAVOR
FROM FIRST_HALF 
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC

문제 풀이때 했던 생각

# 아이스크림의 맛을 출력
# 총주문량을 기준으로 내림차순 정렬, 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬

30. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/151137

정답 코드:

SELECT
        CAR_TYPE,
        COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%'
        OR OPTIONS LIKE '%열선시트%'
        OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

문제 풀이때 했던 생각

# 12세 이하인 여자환자
# 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회
# 전화번호가 없는 경우, 'NONE'으로 출력
# 결과는 나이를 기준으로 내림차순 정렬, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 

 

다른풀이

SELECT
    CAR_TYPE,
    COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;

문제 풀이때 했던 생각

REGEXP 란 함수를 사용해 WHERE절 을 단축,
해당 함수에 대해선 추후 따로 공부할 예정

 

 

 

 

'E.코드카타 > 코드카타 Level 1~2' 카테고리의 다른 글

코드카타 Level 1 다시 풀어보기  (0) 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