프로그래머스 SQL 오답노트
자동차 평균 대여기간 구하기
문제: CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.
틀린 이유: 대여 기간은 당일 하루 빌린것도 처리해야 하므로 날짜 계산 시 +1 계산
SELECT CAR_ID,
ROUND(AVG(DATEDIFF(END_dATE,START_dATE)+1),1)
AVERAGE_DURATION
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >=7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
가격이 제일 비싼 식품의 정보 출력하기
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
WITH A AS (
SELECT *, RANK() OVER (ORDER BY PRICE DESC ) RANKING
FROM FOOD_PRODUCT
)
SELECT PRODUCT_ID,PRODUCT_NAME, PRODUCT_CD,CATEGORY,PRICE FROM A
WHERE RANKING =1
다른 풀이 방법
1) PRICE 를 기준으로 내림차순 하여 LIMIT 1
2) WHERE 절에서 서브쿼리 활용
SELECT * FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)