표만들기 예제
1) 모든 극장의 이름과 위치를 보이시오.
select * from theater;
2) '잠실'에 있는 극장을 보이시오.
select * from theater
where position = '잠실';
3) '잠실'에 사는 고객의 이름을 오름차순으로 보이시오.
select cname from ecustomer
where custpos = '잠실'
order by cname;
4) 가격이 8000원 이하인 영화의 극장번호, 상영관번호, 영화제목을 보이시오.
select cid, thid, ctitle from cinema
where price <= 8000;
5) 극장 위치와 고객의 주소가 같은 고객을 보이시오.
select * from ecustomer
where custpos in (select position from theater);
select distinct e.* from ecustomer e, theater t
where e.custpos = t.position;
6) 극장의 수는 몇개인가?
select count(*) from theater;
7) 상영되는 영화의 평균 가격은 얼마인가?
select avg(price) from cinema;
8) 2014년 9월 1일에 영화를 관람한 고객의 수는 얼마인가?
9) '대한'극장에서 상영된 영화제목을 출력
select ctitle from cinema
where cid in (
select cid from APPOINTMENT
where thid in (
select thid from theater
where thname = '대한'
)
);
select c.* from cinema c, theater t, appointment a
where c.cid = a.cid and
t.thid = a.thid and
thname = '대한';
10) '대한'극장에서 영화를 본 고객의 이름을 출력
select cname from ecustomer
where cusid in (
select cusid from appointment
where thid in (
select thid from theater
where thname = '대한'
)
);
select cname from ecustomer e, appointment a, theater t
where e.cusid = a.cusid and
a.thid = t.thid and
thname = '대한';
11) '대한'극장의 전체 수입을 출력
- 예약으로 부터 극장번호가 3번인것 중에서 상영관번호별로 예약건수를 조회
select sum(miney) from (
select price * count(a.cid) miney from cinema c, (
select * from appointment
where thid = 3
) a
where c.cid = a.cid
group by price
);
12) 극장별 상영관 수를 출력
select thname, count(*) from cinema c, theater t
where c.thid = t.thid
group by thname;
select thname, count(*) from cinema, (
select * from theater
) th
where th.thid = cinema.thid
group by thname;
13) '잠실'에 있는 극장의 상영관 출력
select * from cinema
where thid in (
select thid from theater
where position = '잠실'
);
select c.* from cinema c, theater t
where c.thid = t.thid and
position = '잠실';
X) 2014년 9월 1일의 극장별 평균 관람 고객수 출력
X) 2014년 9월 1일에 가장 많은 고객이 관람한 영화를 출력
위의 답
1) 모든 극장의 이름과 위치를 보이시오.
select 극장이름, 위치 from 극장;
2) '잠실'에 있는 극장을 보이시오.
select * from 극장 where 위치 = '잠실';
3) '잠실'에 사는 고객의 이름을 오름차순으로 보이시오.
select 이름 from 고객
where 주소 = '잠실'
order by 이름;
4) 가격이 8000원 이하인 영화의 극장번호, 상영관번호, 영화제목을 보이시오.
select 극장번호, 상영관번호, 영화제목
from 상영관
where 가격 <= 8000;
5) 극장 위치와 고객의 주소가 같은 고객을 보이시오.
select 고객.*
from 고객, 극장, 예약,상영관
where 극장.극장번호 = 상영관.극장번호 and
상영관.극장번호 = 예약.극장번호 and
상영관.상영관번호 = 예약.상영관번호 and
예약.고객번호 = 고객.고객번호 and
극장.위치 = 고객.주소;
6) 극장의 수는 몇개인가?
select count(*) from 극장;
7) 상영되는 영화의 평균 가격은 얼마인가?
select avg(가격) from 상영관;
8) 2014년 9월 1일에 영화를 관람한 고객의 수는 얼마인가?
select count(*) from 예약
where 날짜 = '2014/09/01';
9) '대한'극장에서 상영된 영화제목을 출력
select 영화제목
from 극장, 상영관
where 극장.극장번호 = 상영관.극장번호 and
극장이름 = '대한';
select 영화제목
from 상영관
where 극장번호 = (select 극장번호 from 극장 where 극장이름 = '대한');
10) '대한'극장에서 영화를 본 고객의 이름을 출력
select 이름
from 고객
where 고객번호 in ( select 고객번호
from 예약
where 극장번호 = (select 극장번호
from 극장
where 극장이름 = '대한') );
11) '대한'극장의 전체 수입을 출력
- 예약으로 부터 극장번호가 3번인것 중에서 상영관번호별로 예약건수를 조회
select 상영관번호, count(*)
from 예약
where 극장번호 = 3
group by 상영관번호;
- 예약으로 부터 극장이름이 대한극장인 것 중에서 상영관번호별로 예약건수를 조회
select 상영관번호, count(*)
from 예약
where 극장번호 = ( select 극장번호 from 극장 where 극장이름 = '대한' )
group by 상영관번호;
- 예약으로 부터 극장이름이 대한극장인 것 중에서 상영관번호별로 예약건수와 영화가격을 조회
select 극장번호, 상영관번호,
count(*) cnt
from 예약 a
where 극장번호 = ( select 극장번호 from 극장 where 극장이름 = '대한' )
group by 극장번호, 상영관번호;
select 극장번호, 상영관번호, cnt,
(select 가격 from 상영관 b where a.극장번호 = b.극장번호 and a.상영관번호 = b.상영관번호) 가격
from (select 극장번호, 상영관번호,
count(*) cnt
from 예약 a
where 극장번호 = ( select 극장번호 from 극장 where 극장이름 = '대한' )
group by 극장번호, 상영관번호) a;
SQL> select 극장번호, 상영관번호, cnt,
2 (select 가격 from 상영관 b where a.극장번호 = b.극장번호 and a.상영관번호 = b.상영관번호) 가격
3 from (select 극장번호, 상영관번호,
4 count(*) cnt
5 from 예약 a
6 where 극장번호 = ( select 극장번호 from 극장 where 극장이름 = '대한' )
7 group by 극장번호, 상영관번호) a;
극장번호 상영관번호 CNT 가격
-------- ---------- ---------- --------
3 1 2 7,500
3 2 1 8,000
select sum(cnt*
(select 가격 from 상영관 b where a.극장번호 = b.극장번호 and a.상영관번호 = b.상영관번호)) sum
from (select 극장번호, 상영관번호,
count(*) cnt
from 예약 a
where 극장번호 = ( select 극장번호 from 극장 where 극장이름 = '대한' )
group by 극장번호, 상영관번호) a;
12) 극장별 상영관 수를 출력
select (
select 극장이름 from 극장 a where a.극장번호 = b.극장번호
), count(*)
from 상영관 b
group by 극장번호;
13) '잠실'에 있는 극장의 상영관 출력
select * from 상영관
where 극장번호 in (select 극장번호 from 극장 where 위치='잠실');
14) 2014년 9월 1일의 극장별 평균 관람 고객수 출력
select 극장번호, count(*)
from 예약
group by 극장번호;
select * from 예약 order by 극장번호, 상영관번호;
15) 2014년 9월 1일에 가장 많은 고객이 관람한 영화를 출력
16) 각 테이블에 데이터를 삽입하는 insert문을 하나씩 실행 하시오.
17) 영화의 가격을 10%씩 인상하시오.
'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글
insert, update (0) | 2024.06.20 |
---|---|
스키마 수정 (0) | 2024.06.19 |
기본키와 참조키의 설정 (0) | 2024.06.19 |
제약의 종류와 설정 (0) | 2024.06.18 |
테이블 컬럼 추가하기 + 기존 내용 예제 + union, minus (0) | 2024.06.18 |