기록

프로그래머스_가격이 제일 비싼 식품의 정보 출력하기 본문

코딩테스트/SQL

프로그래머스_가격이 제일 비싼 식품의 정보 출력하기

youngyin 2023. 9. 10. 20:47

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131115?language=oracle 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

SQL 분석 함수(Analytic Functions)는 SQL 쿼리를 사용하여 데이터를 분석하고 집계하는 데 사용되는 함수입니다. 이러한 함수는 특히 윈도우 함수라고도 불립니다. 결과 집합 내의 특정 범위를 정의하는 OVER() 절과 함께 사용됩니다.

코드

-- 분석함수
SELECT 
    T.PRODUCT_ID, 
    T.PRODUCT_NAME, 
    T.PRODUCT_CD, 
    T.CATEGORY, 
    T.PRICE
FROM (
    SELECT 
        PRODUCT_ID, 
        PRODUCT_NAME, 
        PRODUCT_CD, 
        CATEGORY, 
        PRICE, 
        RANK() OVER (ORDER BY PRICE DESC) RANK
    FROM FOOD_PRODUCT
) T
WHERE T.RANK = 1

-- 정렬
SELECT 
    PRODUCT_ID, 
    PRODUCT_NAME, 
    PRODUCT_CD, 
    CATEGORY, 
    PRICE
FROM (
    SELECT 
        PRODUCT_ID, 
        PRODUCT_NAME, 
        PRODUCT_CD, 
        CATEGORY, 
        PRICE
    FROM FOOD_PRODUCT 
    ORDER BY PRICE DESC
)
WHERE ROWNUM=1;

마무리 하면서

처음 문제를 봤을 때 윈도우 함수를 사용해야 겠구나라는 생각이 들어서, 윈도우 함수를 사용해서 문제를 풀었다. 다른 사람들의 풀이를 보니, 굳이 어렵고 복잡한 윈도우 함수를 사용하지 않더라도, 정렬만으로 문제를 풀 수 있었다. 처음 실무에서 윈도우 함수를 접했을 때 이걸 어떻게 해석해야 하는지 한참을 고민했던 기억이 있다. 어렵고 복잡하다는 이유로 사용하지 않아야 하는 건 아니지만, 어떻게 해야 누구나 쉽게 이해할 수 있을까도 함께 고민할 필요가 있다.

Comments