1. 코딩테스트 연습 > SUM, MAX, MIN > 가격이 제일 비싼 식품의 정보 출력하기
문제 설명
다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다.

문제
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
예시
FOOD_PRODUCT 테이블이 다음과 같을 때

SQL을 실행하면 다음과 같이 출력되어야 합니다.

처음 내가 쓴 답
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD,
CATEGORY, MAX(PRICE) AS PRICE
FROM FOOD_PRODUCT
오답 이유 : PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY는 MAX(PRICE)와 무관하게 첫번째 행의 정보들이 출력
두번째 내가 쓴 답
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD,
CATEGORY, MAX(PRICE) AS PRICE
FROM FOOD_PRODUCT
WHERE PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

2. 코딩테스트 연습 > SUM, MAX, MIN > 가장 비싼 상품 구하기
문제 설명
다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.
문제
PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요.
예시
예를 들어 PRODUCT 테이블이 다음과 같다면

가장 높은 판매가는 22,000 원 이므로, 다음과 같은 결과가 나와야 합니다.

내가 쓴 답
SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

3. 코딩테스트 연습 > SUM, MAX, MIN > 중복 제거하기
문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

※ 컬럼 이름(위 예제에서는 count)은 일치하지 않아도 됩니다.
본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
처음에 쓴 답
SELECT DISTINCT COUNT(NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
오답 이유 : COUNT(NAME)을 DISTINCT할 경우 중복이 제거되지 않음
최종 내가 쓴 답
SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL

4. 코딩테스트 연습 > SUM, MAX, MIN > 잡은 물고기 중 가장 큰 물고기의 길이
문제 설명
낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.
문제
FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm' 를 붙여 출력하는 SQL 문을 작성해주세요.
이 때 컬럼명은 'MAX_LENGTH' 로 지정해주세요.
예시
예를 들어 FISH_INFO 테이블이 다음과 같다면

가장 큰 물고기의 길이는 50cm 이므로 결과는 다음과 같아야 합니다.

내가 쓴 답
SELECT CONCAT(FORMAT(MAX(LENGTH), 2), 'cm') AS MAX_LENGTH
FROM FISH_INFO
| 함수 | 설명 |
| CONCAT(a, b) | 문자열 a와 b를 연결 |
| FORMAT(n, d) | 숫자 n을 소수점 d자리까지 포맷 (콤마 포함) |

5. 코딩테스트 연습 > SUM, MAX, MIN > 조건에 맞는 아이템들의 가격의 총합 구하기
문제 설명
다음은 어느 한 게임에서 사용되는 아이템들의 아이템 정보를 담은 ITEM_INFO 테이블입니다. ITEM_INFO 테이블은 다음과 같으며, ITEM_ID, ITEM_NAME, RARITY, PRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.

문제
ITEM_INFO 테이블에서 희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 SQL문을 작성해 주세요. 이때 컬럼명은 'TOTAL_PRICE'로 지정해 주세요.
예시
예를 들어 ITEM_INFO 테이블이 다음과 같다면

조건에 해당되는 아이템의 아이템 ID는 1, 2, 4이며 각 아이템들의 가격은 9000, 11000, 12000 이므로 조건에 해당되는 아이템들의 가격의 합은 다음과 같습니다.

내가 쓴 답
SELECT SUM(PRICE) AS TOTAL_PRICE FROM ITEM_INFO
WHERE RARITY = 'LEGEND'

'데이터분석 > SQL' 카테고리의 다른 글
| [프로그래머스] MySQL 코딩테스트(6) - JOIN편 (0) | 2025.09.18 |
|---|---|
| [프로그래머스] MySQL 코딩테스트(5) - JOIN편 (2) | 2025.08.15 |
| [프로그래머스] MySQL 코딩테스트(4) - GROUP BY편 (7) | 2025.08.12 |
| [프로그래머스] MySQL 코딩테스트(2) - SELECT편 (7) | 2025.08.06 |
| [프로그래머스] MySQL 코딩테스트(1) - SELECT편 (3) | 2025.08.06 |