이번주는 SQL 코딩테스트 & 연습문제 풀이 위주로 진행되었는데요!
강의 마지막으로 갈수록 난이도 있는 문제도 많이 있었어서 문제풀이 위주로 공유해보겠습니다.
(내용은 추후 수정예정)
연습문제36 (실전)
각 고객이 어떤 영화 카테고리를 가장 자주 대여하는지 알고 싶습니다. 각 고객별로 가장 많이 대여한 영화 카테고리와 해
당 카테고리에서의 총 대여 횟수, 그리고 해당 고객 이름을 조회하는 SQL 쿼리를 작성해주세요. 자주 대여하는 카테고리
에 동률이 있을 경우 모두 보여주세요.
SELECT
c.first_name,
c.last_name,
cat.name as category_name,
COUNT(*) as rental_count
FROM
customer c
JOIN rental r ON c.customer_id = r.customer_id
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film_category fc ON i.film_id = fc.film_id
JOIN category cat ON fc.category_id = cat.category_id
GROUP BY
c.customer_id,
cat.name
HAVING
COUNT(*) = (
SELECT
COUNT(*)
FROM
rental r2
JOIN inventory i2 ON r2.inventory_id = i2.inventory_id
JOIN film_category fc2 ON i2.film_id = fc2.film_id
WHERE
r2.customer_id = c.customer_id
GROUP BY
fc2.category_id
ORDER BY
COUNT(*) DESC
LIMIT 1
)
연습문제40 (실전)
가장 많은 수의 종류가 다른(동일 영화를 반복하여 대여하지 않고) 영화를 대여한 고객을 찾아내고, 대여한 종류가 다른
(동일 영화를 반복하여 대여하지 않고) 영화의 수를 확인하세요. 또한 해당 고객이 대여한 영화(여기서는 동일 영화 반복
대여도 가능)가 가장 많이 속해있는 카테고리를 찾아내세요.
SELECT
cus.customer_id,
CONCAT(cus.first_name, ' ', cus.last_name) AS customer_name,
COUNT(DISTINCT inv.film_id) AS unique_films_rented,
(
SELECT cat.name
FROM category cat
JOIN film_category fc ON cat.category_id = fc.category_id
JOIN inventory inv2 ON fc.film_id = inv2.film_id
JOIN rental ren2 ON inv2.inventory_id = ren2.inventory_id
WHERE ren2.customer_id = cus.customer_id
GROUP BY cat.name
ORDER BY COUNT(*) DESC
LIMIT 1
) AS most_common_category
FROM
rental ren
JOIN
inventory inv ON ren.inventory_id = inv.inventory_id
JOIN
customer cus ON ren.customer_id = cus.customer_id
GROUP BY
cus.customer_id
ORDER BY
unique_films_rented DESC
LIMIT 1;
'Data > Data Analysis Bootcamp' 카테고리의 다른 글
[패스트캠퍼스] 데이터 분석 부트캠프 11주차 후기! (0) | 2024.05.03 |
---|---|
[ADsP] 자격증 스터디 2주차 후기! (0) | 2024.04.21 |
[북스터디] 빅데이터 시대, 성과를 이끌어 내는 데이터 문해력 _ 1주차 후기 (0) | 2024.04.17 |
[SQLD] 자격증 스터디 1주차 후기! (0) | 2024.04.14 |
[ADsP] 자격증 스터디 1주차 후기! (0) | 2024.04.14 |