
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으로 합쳤다.
'SQL' 카테고리의 다른 글

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으로 합쳤다.