MySQL 테이블 결합하는 join을 활용한 실습 문제 (left join, right join ...)
2023. 12. 26. 13:16ㆍDatabase/MySQL
728x90
반응형
728x90
join을 활용한 다양한 실습문제를 통해 원하는 데이터를 결합, 추출할 수 있도록 연습합니다.
실습문제
1. 각 고객별로 주문 수를 나타내시오. 고객의 이름과 이메일이 함께 나와야 합니다.
주문한 내용을 기반으로 주문한 내용만 나오게 한 방법
select c.first_name, c.last_name, c.email, count(o.customer_id) as order_cnt
from orders o
join customers c
on c.id = o.customer_id
group by o.customer_id;
2. 모든 회원정보를 다 나타내고 주문 안한 사람은 주문횟수가 0으로 나타나도록 하고 싶을 때
select c.first_name, c.last_name, c.email, count(o.customer_id) as order_cnt
from orders o
right join customers c
on c.id = o.customer_id
group by o.customer_id;
3. 각 고객별로 주문 금액 평균이 300달러 이상인 데이터만 가져오시오
(사람의 이메일과 이름이 함께 나와야 함)
select c.first_name, c.last_name, c.email, avg(o.amount) as avg
from orders o
join customers c
on o.customer_id = c.id
group by o.customer_id
having avg >= 300;
4. 각 고객별로 주문 금액의 최대값을 구하고 이 값이 600달러 이상인 데이터만 가져와서 내림차순으로 정렬하시오
이름과 이메일 주소도 함께 나와야 합니다.
select o.*, c.first_name, c.last_name, c.email, max(o.amount) as max_amount
from orders o
join customers c
on c.id = o.customer_id
group by o.customer_id
having max_amount >= 600
order by max_amount desc;
5. order 테이블의 주문날짜의 최소값과 최대값을 구하세요
select max(o.order_date) min_date, min(o.order_date) max_date
from orders o;
6. 2019년 12월 20일부터 2020년 1월 10일 사이에 주문한 사람은 몇명입니까?
select count(distinct customer_id)
from orders o
where order_date >= '2019-12-20' and order_date <= '2020-01-10';
select count(distinct customer_id)
from orders o
where order_date between '2019-12-20' and '2020-01-10';
7. 2019년 12월 20일 부터 2020년 1월 10일 사이의 주문 데이터에서 고객별 주문금액 평균이 300달러 이상인 사람의 이름과 평균금액을 가져오시오
select c.first_name, c.last_name, avg(o.amount) as avg
from orders o
join customers c
on o.customer_id = c.id
where o.order_date between '2019-12-20' and '2020-01-10'
group by o.customer_id
having avg >= 300
order by avg desc;
반응형
728x90
반응형
'Database > MySQL' 카테고리의 다른 글
MySQL 인스타그램 관련 데이터 관리 실습 문제(order by, group by, join, limit ...) (0) | 2023.12.26 |
---|---|
MySQL 테이블 데이터 Auto Increment 초기화 및 조회하는 방법 (1) | 2023.12.26 |
MySQL 여러 테이블을 결합하는 join과 left join, right join 사용 방법 과 예시 (2) | 2023.12.26 |
MySQL 여러 테이블 연결(참조)하는 Foreign Key 설정하는 방법 (1) | 2023.12.22 |
MySQL 현재 시간으로 데이터를 저장하는 방법 now(), on update now(), now() on update now() (1) | 2023.12.22 |