-
728x90
문제 설명
다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.
문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.
답안
-- 코드를 입력하세요 SELECT car_id, round(avg(datediff(end_date,start_date))+1,1) as average_duration FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP by car_id HAVING(round(avg(datediff(end_date,start_date)+1),1))>=7 order by 2 desc,1 desc
이번 문제 풀면서 datediff() 함수를 처음봤다.datediff()
함수는 mysql 기반의 DBMS에서 사용 가능한 함수로두 날짜 차이를 일단위로 리턴
하는 함수다.사용법은
datediff(기준일,빼는일)
로 기준일에서 빼야 할 일을 빼주는 식으로 처리된다.그러나 기준일의 당일자는 처리 되지 않기 때문에 +1을 해줬다.
그리고 대여 평균일 7일 이상의 조건은
HAVING
절에서 처리해줬고 정렬은 컬럼 명 대신 컬럼 순서 번호를 이용해 보다 간편하게 정렬했다.728x90'database > coding test' 카테고리의 다른 글
JOIN - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) 2023.09.04 JOIN - 조건에 맞는 도서와 저자 리스트 출력하기 (0) 2023.09.04 SUM, MAX, MIN - 가격이 제일 비싼 식품의 정보 출력하기 (0) 2023.09.01 SUM,MAX,MIN - 가장 비싼 상품 구하기 (0) 2023.09.01 IS NULL - 나이 정보가 없는 회원 수 구하기 (0) 2023.08.31