FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
/* 조건1 : 식품분류별 가격이 제일 비싼 식품 조건2 : 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력 조건3 : 식품 가격을 기준으로 내림차순 */ # 식품분류별 높은 가격 데이터 테이블 with tb as ( select CATEGORY ,max(PRICE) as MAX_PRICE from FOOD_PRODUCT where 1=1 and CATEGORY in ('과자', '국', '김치', '식용유') group by 1 ) select F.CATEGORY ,F.PRICE as MAX_PRICE ,F.PRODUCT_NAME from tb, FOOD_PRODUCT as F where 1=1 and tb.CATEGORY = F.CATEGORY and tb.MAX_PRICE = F.PRICE order by 2 desc
문제를 풀 때 서브쿼리, JOIN 방법 등의 다양한 방법이 존재하는데,
나의 경우 필요한 정보를 담은 가상 테이블을 만든 다음 기존 테이블과 조인하는 방법을 선호한다. (개인적으로 위 방법이 가독성이 높다고 생각하기 때문...)
하지만, 위 방법이 좋은 방법인지 아직은 잘 모르겠다.
SQL의 성능적인 부분을 고려하여 코드를 작성하는 연습과 공부가 필요하다는 생각이 드는 문제였다.
https://school.programmers.co.kr/learn/courses/30/lessons/131116