코딩테스트 sql/2단계
2단계(3)
세용용용용
2023. 11. 24. 09:54
sql쿼리 각 절의 우선 순위
from >>> where >>> select >>> order by >>> group by >>> having >>> limit(이절은 order by 이후 실행)
1. 재구매가 일어난 상품과 회원 리스트
ONLINE_SALE 테이블 : 의류 쇼핑 상품 판매 정보

문제 : 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬
나의 쿼리
SELECT USER_ID, PRODUCT_ID # 컬럼 선택
from ONLINE_SALE # 데이터 불러오기
group by USER_ID, PRODUCT_ID having count(*)>1 # 유저id와 상품id로 묶어주고 행수가 2개 이상인것 필터
order by USER_ID, PRODUCT_ID desc # 유저id 오름차순, 상품id 내림차순
2. 조건에 부합하는 중고거래 상태 조회하기
USED_GOODS_BOARD 테이블 : 중고거래 게시판 정보

문제 : 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬
나의 쿼리
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, # 컬럼선택
case
when STATUS='SALE' then '판매중' # sale, reserved, done에 따라 컬럼값 재설정
when STATUS='RESERVED' then '예약중'
else '거래완료'
end as STATUS
from USED_GOODS_BOARD # 데이터 불러오기
where date_format(CREATED_DATE, '%Y-%m-%d')='2022-10-05' # 게시글이 2022년 10월 5일로 필터
order by BOARD_ID desc # 게시글id로 내림차순
3. 자동차 평군 대여 기간 구하기
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블 : 자동차 대여 회사의 자동차 대여 기록

문제 : 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬
나의 쿼리
SELECT CAR_ID, round(sum(datediff(END_DATE, START_DATE)+1)/count(*),1) as AVERAGE_DURATION # 컬럼 선택
from CAR_RENTAL_COMPANY_RENTAL_HISTORY # 데이터 불러오기
group by CAR_ID having round(sum(datediff(END_DATE, START_DATE)+1)/count(*),1)>=7 # 자동차 id를 기준으로 묶고 평균 대여기간이 7일 이상 필터
order by AVERAGE_DURATION desc, CAR_ID desc # 평균 대여기간 내림차순, 자동차 id 내림차순