SQL

[프로그래머스/MySQL] 자동차 평균 대여 기간 구하기 & 헤비 유저가 소유한 장소 & 우유와 요거트가 담긴 장바구니

2023. 8. 8. 10:47
목차
  1. 1. 자동차 평균 대여 기간 구하기  
  2. 2. 헤비 유저가 소유한 장소  
  3. 3. 우유와 요거트가 담긴 장바구니  
728x90

 

1. 자동차 평균 대여 기간 구하기  

https://school.programmers.co.kr/learn/courses/30/lessons/157342

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

 

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 AVERAGE_DURATION >= 7
    ORDER BY 2 DESC, 1 DESC
  • 날짜 계산 함수 DATEDIFF를 배웠다. 처음에 잘 모르고 무작정 뺄셈연산을 했더니 엉뚱한 값이 나왔다.
  • DATEDIFF에 1을 더해주는 이유는 시작 날짜를 포함해주기 위함이다. 같은 날에 빌리고 반납한 경우도 하루 빌린 것으로 처리돼야 하는데 함수를 사용하면 0이 계산된다. 그러므로 시작 날을 포함해주기 위해 1을 더해줘야 한다. 
  • 평균 대여 기간이 7일 이상인 자동차에 대한 조건은 HAVING 절에서 처리해준다.

 


 

2. 헤비 유저가 소유한 장소  

https://school.programmers.co.kr/learn/courses/30/lessons/77487

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요. 

SELECT ID, NAME, HOST_ID
    FROM PLACES
    WHERE HOST_ID IN (SELECT HOST_ID
                        FROM PLACES
                        GROUP BY HOST_ID
                            HAVING COUNT(HOST_ID) >= 2)
    ORDER BY ID
  • 헤비 유저를 찾는 서브 쿼리를 WHERE 절에서 작성하여 HOST_ID를 필터링 한 후 해당 HOST_ID에 대한 정보를 출력하는 방식으로 해결했다. 

 


 

3. 우유와 요거트가 담긴 장바구니  

https://school.programmers.co.kr/learn/courses/30/lessons/62284

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 

SELECT DISTINCT M.CART_ID
    FROM CART_PRODUCTS AS M
    INNER JOIN (SELECT CART_ID
           FROM CART_PRODUCTS
           WHERE NAME = 'Yogurt') AS Y ON M.CART_ID = Y.CART_ID
    WHERE M.NAME = 'Milk'
    ORDER BY M.CART_ID
  • MILK를 구입한 CART_ID를 집계하는 쿼리에 YOGURT를 구입한 CART_ID에 대한 서브쿼리를 INNER JOIN으로 합쳤다. 
728x90

'SQL' 카테고리의 다른 글

[HackerRank/MySQL] 8월 15일 SQL 스터디 10문제 (Lv Easy. 10개)  (0) 2023.08.22
[프로그래머스/MySQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 & 주문량이 많은 아이스크림들 조회하기  (0) 2023.08.08
[프로그래머스/MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 & 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 & 취소되지 않은 진료 예약 조회하기  (0) 2023.08.08
[프로그래머스/MySQL] 특정 옵션이 포함된 자동차 리스트 구하기 & 조건에 부합하는 중고거래 상태 조회하기 & 서울에 위치한 식당 목록 출력하기  (0) 2023.08.08
[프로그래머스/MySQL] 과일로 만든 아이스크림 고르기 & 최댓값 구하기 & 조건에 맞는 사용자 정보 조회하기  (0) 2023.08.08
  1. 1. 자동차 평균 대여 기간 구하기  
  2. 2. 헤비 유저가 소유한 장소  
  3. 3. 우유와 요거트가 담긴 장바구니  
'SQL' 카테고리의 다른 글
  • [HackerRank/MySQL] 8월 15일 SQL 스터디 10문제 (Lv Easy. 10개)
  • [프로그래머스/MySQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 & 주문량이 많은 아이스크림들 조회하기
  • [프로그래머스/MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 & 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 & 취소되지 않은 진료 예약 조회하기
  • [프로그래머스/MySQL] 특정 옵션이 포함된 자동차 리스트 구하기 & 조건에 부합하는 중고거래 상태 조회하기 & 서울에 위치한 식당 목록 출력하기
스연
스연
공부 내용 정리 중 (~ ̄▽ ̄)~
스연
데굴데굴✍️🤔
스연
전체
오늘
어제
  • Categories (69)
    • 알고리즘 (33)
    • SQL (27)
    • Data Engineering (2)
    • Back-End (0)
    • CS (0)
    • KT AIVLE school (7)
    • 논문 (0)
    • 자격증 (0)
      • 오픽 (0)
    • 뉴스 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 해커랭크
  • hackerrank
  • 에이블스쿨
  • 콜라스추측
  • 파이썬
  • 프로그래머스
  • 코딩테스트
  • 실버
  • sql
  • 티스토리챌린지
  • 이분탐색
  • 알고리즘
  • 코드트리
  • KT에이블스쿨
  • BFS
  • KT에이블스쿨3기
  • 오블완
  • 백준
  • mysql
  • 에이블스쿨AI

최근 댓글

최근 글

hELLO · Designed By 정상우.
스연
[프로그래머스/MySQL] 자동차 평균 대여 기간 구하기 & 헤비 유저가 소유한 장소 & 우유와 요거트가 담긴 장바구니
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.