01/16 SQL 문제풀이

Data Architect / Engineer·2024년 1월 16일
1

1일_1SQL

목록 보기
5/63
post-thumbnail

문제

  • 프로그래머스 SQL 문제
  • 가격이 제일 비싼 식품의 정보 출력하기 / 레벨 2
  • 문제 내용 : 하단 프로그래머스 문제 링크 참조
  • FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.

내가 작성한 Query (1)

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (
        SELECT MAX(PRICE)
        FROM FOOD_PRODUCT
        );
  • WHERE 조건에 'PRICE'의 가격이 'PRICE의 MAX 값일 때' 조건을 주어 필터링 하는 방법으로 문제 접근
  • 서브쿼리를 통해 'PRICE'의 최대값 추출
  • 문제 조건에 맞게 'PRODUCT_ID', 'PRODUCT_NAME', 'PRODUCT_CD', 'CATEGORY', 'PRICE' 추출

내가 작성한 Query (2)

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;
  • ORDER BY를 이용해 'PRICE' 컬럼을 기준으로 내림차순으로 정렬 (가장 비싼 가격이 위로 정렬)
  • 이후 LIMIT을 이용하여 가장 최상위 1개의 데이터를 추출 (상위 1개의 데이터 추출)

내가 작성한 Query (3)

SELECT MAX(PRICE)
FROM FOOD_PRODUCT;    # PRICE의 MAX 값이 19000임을 먼저 확인!
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = 19000;
  • 먼저 MAX(PRICE)를 통해 PRICE의 최대값이 얼마인지를 확인 (19000)
  • 이후 WHERE절에 PRICE가 19000 인 데이터만을 필터링하여 출력
  • 쿼리를 2번 돌려야하는 번거로움이 있지만, 하나의 방법이 될 수 있으니 정리해놓기

profile
질문은 계속돼 아오에

0개의 댓글