본문 바로가기
Kosta DevOps 과정 280기/Java

예제

by 롯슈83 2024. 6. 19.

표만들기 예제

 

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