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 |
