drop table programming cascade constraints; drop table programmer cascade constraints; drop table product cascade constraints; drop table customer cascade constraints; drop table product_order cascade constraints;
create table programming ( programming_id number(1) primary key, programming_name varchar2(50) );
insert into programming values (1, 'JAVA'); insert into programming values (2, 'C#'); insert into programming values (3, 'C'); insert into programming values (4, 'PYTHON');
create table programmer ( programmer_id number(1) primary key, programmer_name varchar2(20) , career number(2), programming_id number(1) not null references programming(programming_id) );
insert into programmer values (1,'김길동',2, 1); insert into programmer values (2,'박길동',10, 2); insert into programmer values (3,'다길동',1, 3); insert into programmer values (4,'헐길동',5, 1);
create table product ( product_id number(1) primary key, product_name varchar2(20), product_date date, price number(10), programmer_id number(1) references programmer(programmer_id) );
insert into product values (1, 'ERP', '15/01/01', 1000, 1); insert into product values (2, 'SHOPPING MALL', '15/01/22', 2000, 1); insert into product values (3, 'ANDROID APP', '16/10/01', 3000, 2); insert into product values (4, 'iOS APP', '16/09/01', 3000, 3); insert into product values (5, 'NETWORK SYS', '16/09/19',1500, 3);
create table customer ( customer_id number(1) primary key, customer_name varchar2(20) );
insert into customer values (1, '1번고객'); insert into customer values (2, '2번고객'); insert into customer values (3, '3번고객'); insert into customer values (4, '4번고객'); insert into customer values (5, '5번고객');
-- 고객은 하루에 같은 제품을 하나만 구매가능하다. create table product_order ( customer_id number(1) not null references customer(customer_id), order_date date, product_id number(1) not null references product(product_id), cnt number(2), constraints pk_order primary key(customer_id, order_date, product_id) );
insert into product_order values (1, '16/05/01', 1, 1); insert into product_order values (2, '16/05/15', 2, 2); insert into product_order values (3, '16/05/16', 2, 5); insert into product_order values (4, '15/12/01', 3, 2); insert into product_order values (5, '15/11/01', 4, 1);
COMMIT;
select * from programming; select * from programmer; select * from product; select * from customer; select * from product_order;
- 프로그래밍언어별(programming_name) 프로그래머 수를 출력하세요. (모든 프로그래밍 언어 표시, programming_name 오름차순)
PROGRAMMING_NAME COUNT(B.PROGRAMMER_ID) ----------------------- ---------------------- C 1 C# 1 JAVA 2 PYTHON 0
- NOT EXISTS를 사용하여 프로그래머가 한명도 없는 프로그래밍언어이름(programming_name)을 출력하세요.
PROGRAMMING_NAME ------------------- PYTHON
- NOT IN을 사용하여 프로그래머가 한명도 없는 프로그래밍언어이름(programming_name)을 출력하세요.
PROGRAMMING_NAME ------------------- PYTHON
- JAVA 프로그래머의 이름을 출력하세요.
PROGRAMMER_NAME --------------- 김길동 헐길동
- 프로그래밍이름(programming_name)별, product의 수, product의 최대가격(price)을 출력하세요.
PNAME CNT MAXPRICE ---------------- ---------- ---------- C# 1 3000 JAVA 2 2000 C 2 3000
- 프로그래머 경력3년 이상인 사람이 만든 Product을 구입한 고객의 이름을 출력하세요.
CUSTOMER_NAME --------------- 4번고객
- 프로그래밍언어별, product_name별 주문건수 합계를 출력하세요.
programming_name product_name cnt ------------------------------------------------------ C# ANDROID APP 2 JAVA SHOPPING MALL 7 C iOS APP 1 JAVA ERP 1
- product_name별, 주문년도별 주문금액 합계를 출력하세요. (단 주문금액합계가 5000 이상인 데이터만, 주문내역이 없는 product_name도 출력 하세요.)
PRODUCT_NAME NVL(TO_ NVL(TO_C -------------------- ------- -------- ANDROID APP 2015 6,000 SHOPPING MALL 2016 14,000
- 세로축은 product_name별, 가로축은 주문년도를 "2015년", "2016년"으로 구성하여 product_name별, 년도별 주문건수를 집계하세요.(주문건수가 없으로 0으로 표시)
product_name 2015년 2016년 --------------------------- ERP 0 1 ANDROID APP 2 0 SHOPPING MALL 0 7 iOS APP 1 0
- product_name별 구입한 고객의 이름을 콤마(,)로 구분하여 하나의 칼럼에 출력하세요. (고객의 이름은 오름차순 정렬)
product_name customer_name --------------------------- ANDROID APP 4번고객 ERP 1번고객 SHOPPING MALL 2번고객,3번고객 iOS APP 5번고객
|