목록코드카타/SQL (78)
susinlee 님의 블로그
[문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. 대여 기간 컬럼을 하나 만들고2. CAR_ID로 GROUP BY 한 뒤 해당 컬럼을 AVG3. AVG 한 값이 7일 이상인 행들만 필터링4. CAR_ID와 평균 대여 기간 조회5. 평균 대여 기간을 반올림해주고, 내림차순 정렬, 자동차 ID도 내림차순 정[정답]SELECT..
[문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. START_DATE 가 2022년 9월인 행들을 필터2. END_DATE와 START_DATE의 차이 + 1 (빌리는 당일도 기간에 포함)3. 위의 컬럼이 30일 이상인 행들을 장기 대여 그렇지 않으면 단기 대여 표시 (RENT_TYPE 컬럼) 4. 대여 기록 ID를 내림차순 정렬 [정답]SELECT HISTORY_ID..
[문제] REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. 두 테이블을 REST_ID 기준으로 JOIN2. 주소가 서울인 행을 필터링3. 식당ID, 이름, 종류, 즐찾수, 주소를 GROUP BY → 하나의 식당이 나옴4. 그룹화한 리뷰점수들을 평균5. 평균점수를 내림차순, 즐찾수를 내림차순 정렬[정답]SELECT R.REST_ID, R.REST_NAME, R..
[문제] USER_INFO (I) 테이블과 ONLINE_SALE (S) 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요. [단계별 풀이] 1. 테이블을 USER_ID를 기준으로 JOIN2. 성별이 NULL 인 행은 제외3. 년, 월, 성별을 GROUP BY4. 고유한(DISTINCT) S.USER_ID 를 COUNT5. 년 월 성별 기준으로 오름차순[정답]SELECT YEAR(S.SALES_DATE) YEAR, MONTH(S.SALES_DATE) MONTH, GENDER, COUNT(DISTINCT S.USER_ID) USE..
[문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. CAR_ID 로 GROUP BY (중복제거)2. 2022-10-16이 START_DATE와 END_DATE에 있다면 1 (TRUE)3. 대여중이 한번이라도 있으면 대여중이므로 MAX함수 적용한 값이 1이면 대..
[문제] PATIENT(P), DOCTOR(D) 그리고 APPOINTMENT(A) 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 세 테이블을 A.MDDR_ID = D.DR_ID 와 A.PT_NO =P.PT_NO 기준으로 JOIN2. 예약 일시가 2022-04-13이면서 A테이블의 진료과 코드가 CS이면서 예약 취소 여부가 N인 행들만 필터링3. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시를 조회4. 진료예약일시 기준으로 오름차순 ..
[문제] USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. CREATED_DATE가 22년 10월 5일인 행들을 필터링2. 게시글ID, 작성자ID, 게시글 제목, 가격, 거래상태를 조회3. 거래상태를 CASE WHEN을 사용하여 분기별로 분류4. 게시글 ID를 내림차순 정렬[정답]SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, ..
[문제] CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. OPTIONS에서 '네비게이션'이 포함된 행을 필터링 (LIKE)2. 전체 컬럼을 조회3. CAR_ID를 내림차순 정렬[정답]SELECT *FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%네비게이션%'ORDER BY CAR_ID DESC