Programmers : MySQL MAX & IS NULL

김소정·2023년 10월 31일
0

Problem Solving (SQL)

목록 보기
6/6

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

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

풀이

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);

MAX, MIN, AVG와 같은 값과 동일한 값을 가지는, 즉 특정 열에서 최댓값, 최솟값, 평균값을 가지는 행만을 가져오고 싶을 때가 있다.

이럴 땐 단순히 PRICE = MAX(PRICE)라고 작성하면 안 되고, 서브쿼리를 이용해 PRICE의 최댓값을 가져온 다음 해당 값과 일치하는 행을 찾아주어야 한다.


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

FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.

풀이

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기%'
ORDER BY WAREHOUSE_ID ASC;

IFNULL을 이용해 FREEZER_YN 열이 NULL 값을 가지는 경우 'N'으로 출력하도록 하였고, LIKE 구문을 통해 경기도에 위치한 창고만을 추출하였다.


#3 나이 정보가 없는 회원 수 구하기

USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.

풀이

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

'AGE가 NULL 값을 가진다'를 조건으로 걸고, COUNT를 통해 조건에 해당하는 모든 row의 수를 세주었다.



Reference

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

profile
Yonsei University, Applied Statistics

0개의 댓글