Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Eclipse
- CSS
- JavaScript
- icon
- restapi
- 자바
- 코딩
- Firebase
- chart.js
- 오류
- 티스토리챌린지
- 깃허브
- jQuery
- vscode
- SQL
- firestore
- github
- bootstrap
- myBatis
- 기업설명회
- 이클립스
- SQLD
- 오블완
- 스파르타코딩클럽
- AJAX
- spring
- error
- 웹개발
- java
- HTML
Archives
- Today
- Total
푸들푸들
[Sakila] 통계 쿼리 연습 본문
1. 카테고리 별 영화 수
SELECT
c.category_id
, c.`name`
, COUNT(*)
FROM film f
JOIN film_category fc
ON f.film_id = fc.film_id
JOIN category c
ON fc.category_id = c.category_id
GROUP BY c.category_id
2. 러닝타임(length)이 3시간 이상 / 2시간 이상 / 1시간 이상 / 1시간 미만인 영화 수
SELECT
COUNT(*) '3시간 이상'
FROM film
WHERE LENGTH >= 180
SELECT
SUM(CASE WHEN length >= 180 THEN 1 ELSE 0 END) '3시간 이상',
SUM(CASE WHEN length >= 120 AND length < 180 THEN 1 ELSE 0 END) '2시간 이상',
SUM(CASE WHEN length >= 60 AND LENGTH < 120 THEN 1 ELSE 0 END) '1시간 이상',
SUM(CASE WHEN LENGTH < 60 THEN 1 ELSE 0 END) '1시간 미만'
FROM film;
3. 대여료(rental_rate)가 4달러 이상 / 3달러 이상 / 2달러 이상 / 1달러 이상 / 1달러 미만인 영화 수
SELECT COUNT(*) '4달러 이상'
FROM film
WHERE rental_rate >= 4;
SELECT
SUM(CASE WHEN rental_rate >= 4 THEN 1 ELSE 0 END) '4달러 이상',
SUM(CASE WHEN rental_rate >= 3 AND rental_rate < 4 THEN 1 ELSE 0 END) '3달러 이상',
SUM(CASE WHEN rental_rate >= 2 AND rental_rate < 3 THEN 1 ELSE 0 END) '2달러 이상',
SUM(CASE WHEN rental_rate >= 1 AND rental_rate < 2 THEN 1 ELSE 0 END) '1달러 이상',
SUM(CASE WHEN rental_rate < 1 THEN 1 ELSE 0 END) '1달러 미만'
FROM film;
4. 영화 등급(rating) 별 수
SELECT
rating
, COUNT(*) COUNT
FROM film
GROUP BY rating
5. 가장 많은 배우가 참여한 영화 1~5위
SELECT
f.film_id
, f.title
, COUNT(*) COUNT
FROM film_actor fa
JOIN film f
ON fa.film_id = f.film_id
GROUP BY f.film_id
ORDER BY COUNT(*) DESC
LIMIT 5;
6. 가장 많은 영화에 참여한 배우 1~5위
SELECT
a.first_name firstName
, a.last_name lastName
, COUNT(*)
FROM film_actor fa
JOIN actor a
ON fa.actor_id = a.actor_id
GROUP BY fa.actor_id
ORDER BY COUNT(*) DESC
LIMIT 5;
7. 가장 많이 대여된 영화 1~5위
SELECT
f.title
, COUNT(*) COUNT
FROM rental r
JOIN inventory iv
ON r.inventory_id = iv.inventory_id
JOIN film f
ON iv.film_id = f.film_id
GROUP BY r.inventory_id
ORDER BY COUNT(*) DESC
LIMIT 5;
8. 가장 대여 매출이 높은 영화 1~5위
SELECT
f.title title
, SUM(p.amount) totalAmount
FROM payment p
JOIN rental r
ON p.rental_id = r.rental_id
JOIN inventory iv
ON r.inventory_id = iv.inventory_id
JOIN film f
ON iv.film_id = f.film_id
GROUP BY f.film_id
ORDER BY totalAmount DESC
LIMIT 5;
9. 영화를 가장 많이 대여한 고객 1~5위
SELECT
c.customer_id customerId
, c.first_name firstName
, c.last_name lastName
, COUNT(*) '대여횟수'
FROM customer c
JOIN rental r
ON c.customer_id = r.customer_id
GROUP BY c.customer_id
ORDER BY COUNT(*) DESC
LIMIT 5;
10. 고객이 가장 많은 도시 1~5위
SELECT
city.city city
, COUNT(*) '거주 고객 수'
FROM customer c
JOIN address a
ON c.address_id = a.address_id
JOIN city
ON a.city_id = city.city_id
GROUP BY city.city_id
ORDER BY COUNT(*) DESC
LIMIT 5;
11. 고객이 가장 많은 나라 1~5위
SELECT
country.country '국가'
, COUNT(*) '거주 고객 수'
FROM customer c
JOIN address a
ON c.address_id = a.address_id
JOIN city
ON a.city_id = city.city_id
JOIN country
ON city.country_id = country.country_id
GROUP BY country.country_id
ORDER BY COUNT(*) DESC
LIMIT 5;
12. 지점 별 2005년 월별 매출액
SELECT
sr.store_id
, MONTH(p.payment_date) month
, SUM(p.amount) '월 매출액'
FROM payment p
JOIN staff sf
ON p.staff_id = sf.staff_id
JOIN store sr
ON sf.store_id = sr.store_id
WHERE YEAR(p.payment_date)=2005
GROUP BY sr.store_id, MONTH(p.payment_date)
ORDER BY sr.store_id, month;
'구디아카데미 > JAVA' 카테고리의 다른 글
1213 [Sakila] 통계 쿼리 (나라 별 최다 대여 카테고리) (0) | 2024.12.13 |
---|---|
[HTML] 이스케이프 문자 (0) | 2024.12.12 |
1211 Javascript 중복 검사 (0) | 2024.12.11 |
1211 Javascript 시험지 form (0) | 2024.12.11 |
1211 Javascript, AJax, RestAPI select+조건 (0) | 2024.12.11 |