Você está na página 1de 5

/*drop table if exists vendedor cascade;

drop table if exists imovel cascade;


drop table if exists comprador cascade;
drop table if exists oferta cascade;
drop table if exists cidade cascade;
drop table if exists bairro cascade;
drop table if exists estado cascade;
drop table if exists faixa_imovel cascade;*/

CREATE TABLE VENDEDOR (


CDVENDEDOR INTEGER NOT NULL,
NMVENDEDOR VARCHAR(40) NULL,
NMENDERECO VARCHAR(40) NULL,
NRCPF DECIMAL(11) NULL,
NMCIDADE VARCHAR(40) NULL,
SGESTADO CHAR(2) NULL,
TELEFONE VARCHAR(20) NULL,
EMAIL VARCHAR(80) NULL,
PRIMARY KEY (CDVENDEDOR)
);

CREATE TABLE IMOVEL (


CDIMOVEL INTEGER NOT NULL,
CDVENDEDOR INTEGER NULL,
CDBAIRRO INTEGER NULL,
CDCIDADE INTEGER NULL,
SGESTADO CHAR(2) NULL,
NMENDERECO VARCHAR(40) NULL,
NRAREAUTIL DECIMAL(10,2) NULL,
NRAREATOTAL DECIMAL(10,2) NULL,
DSIMOVEL VARCHAR(300) NULL,
VLPRECO DECIMAL(10,2) NULL,
NROFERTAS INTEGER NULL,
STVENDIDO CHAR(1) NULL,
DTLANCTO DATE NULL,
IMOVEL_INDICADO INTEGER NULL,
PRIMARY KEY (CDIMOVEL)
);

CREATE TABLE COMPRADOR (


CDCOMPRADOR INTEGER NOT NULL,
NMCOMPRADOR VARCHAR(40) NULL,
NMENDERECO VARCHAR(40) NULL,
NRCPF DECIMAL(11) NULL,
NMCIDADE VARCHAR(20) NULL,
NMBAIRRO VARCHAR(20) NULL,
SGESTADO CHAR (2) NULL,
TELEFONE VARCHAR(20) NULL,
EMAIL VARCHAR(80) NULL,
PRIMARY KEY (CDCOMPRADOR)
);
CREATE TABLE OFERTA (
CDIMOVEL INTEGER NOT NULL,
CDCOMPRADOR INTEGER NOT NULL,
VLOFERTA DECIMAL (16,2) NULL,
DTOFERTA DATE NULL,
PRIMARY KEY (CDIMOVEL, CDCOMPRADOR)
);
CREATE TABLE ESTADO (
SGESTADO CHAR(2) NOT NULL,
NMESTADO VARCHAR(40) NULL,
PRIMARY KEY (SGESTADO)
);
CREATE TABLE CIDADE (
CDCIDADE INTEGER NOT NULL,
SGESTADO CHAR(2) NOT NULL,
NMCIDADE VARCHAR(20),
PRIMARY KEY (CDCIDADE,SGESTADO)
);
CREATE TABLE BAIRRO(
CDBAIRRO INTEGER NOT NULL,
CDCIDADE INTEGER NOT NULL,
SGESTADO CHAR(2) NOT NULL,
NMBAIRRO VARCHAR(20) NULL,
PRIMARY KEY (CDBAIRRO, CDCIDADE, SGESTADO)
);
CREATE TABLE FAIXA_IMOVEL (
CDFAIXA INTEGER NOT NULL,
NMFAIXA VARCHAR(30) NULL,
VLMINIMO DECIMAL(14,2),
VLMAXIMO DECIMAL(14,2),
PRIMARY KEY (CDFAIXA)
);
ALTER TABLE IMOVEL
ADD FOREIGN KEY (CDVENDEDOR)
REFERENCES VENDEDOR(CDVENDEDOR);

ALTER TABLE OFERTA


ADD FOREIGN KEY (CDIMOVEL)
REFERENCES IMOVEL(CDIMOVEL);

ALTER TABLE OFERTA


ADD FOREIGN KEY (CDCOMPRADOR)
REFERENCES COMPRADOR(CDCOMPRADOR);
ALTER TABLE IMOVEL
ADD CONSTRAINT IMOVEL_IMOVEL
FOREIGN KEY (IMOVEL_INDICADO)
REFERENCES IMOVEL (CDIMOVEL);

ALTER TABLE CIDADE


ADD FOREIGN KEY (SGESTADO)
REFERENCES ESTADO(SGESTADO);

ALTER TABLE BAIRRO


ADD CONSTRAINT CIDADE_BAIRRO
FOREIGN KEY (CDCIDADE,SGESTADO)
REFERENCES CIDADE;

--ALTER TABLE BAIRRO


-- ADD CONSTRAINT IMOVEL_BAIRRO
-- FOREIGN KEY (CDBAIRRO, CDCIDADE, SGESTADO)
-- REFERENCES IMOVEL;
insert into estado
values ('SP','SÃO PAULO');
insert into estado
values ('RJ','RIO DE JANEIRO');
insert into estado
values ('MG','MINAS GERAIS');
insert into cidade
values (1,'SP','SÃO PAULO');
insert into cidade
values (2,'SP','SANTO ANDRÉ');
insert into cidade
values (3,'SP','CAMPINAS');
insert into cidade
values (1,'RJ','RIO DE JANEIRO');
insert into cidade
values (2,'RJ','NITERÓI');
insert into bairro
values (1,1,'SP','JARDINS');
insert into bairro
values (2,1,'SP','MORUMBI');
insert into bairro
values (3,1,'SP','AEROPORTO');
insert into bairro
values (1,1,'RJ','AEROPORTO');
insert into bairro
values (2,1,'RJ','FLAMENGO');
insert into vendedor (cdvendedor,nmvendedor,email,nmendereco)
values (1,'Maria da Silva','msilva@novatec.com.br','Rua do Grito, 45');
insert into vendedor (cdvendedor,nmvendedor,email,nmendereco)
values (2,'Marcos Andrade','mandrade@novatec.com.br','Av. da Saudade, 325');
insert into vendedor (cdvendedor,nmvendedor,email,nmendereco)
values (3,'Andre Cardoso','acardoso@novatec.com.br','Av. Brasil, 401');
insert into vendedor (cdvendedor,nmvendedor,email,nmendereco)
values (4,'Tatiana Rosa','trosa@novatec.com.br','Rua do Imperador, 778');
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (1,1,1,1,'SP','Al.Tiete, 3304 ap 101',250,400,180000,null);
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (2,1,2,1,'SP','Av Morumbi, 2230',150,250,135000,1);
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (3,2,1,1,'RJ','Rua Gal. Osorio, 445, apto 34',250,400,185000,2);
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (4,2,2,1,'RJ','Av. Dom Pedro I, 882',120,200,110000,1);
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (5,3,3,1,'SP','Av. Rubem Berta, 2355',110,200,95000,4);
insert into imovel
(cdimovel,cdvendedor,cdbairro,cdcidade,sgestado,nmendereco,nrareautil,nrareatotal,v
lpreco,imovel_indicado)
values (6,4,1,1,'RJ','RUA Getulio Vargas, 552',200,300,99000,5);
insert into comprador (cdcomprador, nmcomprador, nmendereco,email)
values (1,'Emmanuel Antunes','Rua Saraiva, 452','eantunes@terra.com.br');
insert into comprador (cdcomprador, nmcomprador, nmendereco,email)
values (2,'Joana Pereira','Av. Portugal, 52','jpereira@uol.com.br');
insert into comprador (cdcomprador, nmcomprador, nmendereco,email)
values (3,'Ronaldo Campelo','Rua Estados Unidos, 790','rcampelo@yahoo.com.br');
insert into comprador (cdcomprador, nmcomprador, nmendereco,email)
values (4,'Manfred Augusto','Av. Brasil, 351','maugusto@terra.com.br');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (1,1,170000,'2007/10/01');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (1,3,180000,'2007/10/01');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (2,2,135000,'2007/10/02');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (2,4,100000,'2007/10/02');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (3,1,160000,'2007/05/01');
insert into oferta (cdcomprador,cdimovel, vloferta,dtoferta)
values (3,2,140000,'2007/02/02');

--1) Fa�a uma lista como todos os nomes de vendedores e endere�o dos respectivos
--im�veis, e o comprador tenha o c�digo 2 ou o bairro seja c�digo 1.
--FA�A UMA LISTA DE IMOVEIS DO MESMO BAIRRO DE IMOVEL = 2 E EXCLUA O IMVOEL DE SUA
BUSCA
select * from imovel;

select CDIMOVEL,NMENDERECO
FROM IMOVEL WHERE CDBAIRRO;
--2) Fa�a uma lista que mostre todos os imoveis que custam mais que a media de
preco dos imoveis

select cdimovel,nmendereco, vlpreco from imovel where vlpreco > (select


avg(vlpreco) from imovel);

select * from oferta

--3) Fa�a una lista com todos os compradores que tenham ofertas cadastradas com
valores superiores a 70.000
select c.nmcomprador, o.vloferta from comprador c, oferta o where o.cdcomprador =
c.cdcomprador and o.vloferta > 70000

--3) Outro jeito da mesma coisa:


select nmcomprador from comprador where cdcomprador in (select cdcomprador from
oferta where vloferta > 70000);

--4) Fa�a uma lista com todos os imoveis com a oferta superior a media do valor das
ofertas.

select * from imovel

select i.cdimovel, o.cdcomprador ,o.vloferta


from oferta o, imovel i
where i.vlpreco > (select avg(vloferta) from oferta) and i.cdimovel= o.cdimovel
group by i.cdimovel, o.cdcomprador, o.vloferta;

--5) Faca uma lista com todos os imoveis com pre�o superior a media de pre�o dos
imoeveis do bairro
select cdimovel, nmendereco, vlpreco from imovel i where vlpreco > (select
avg(vlpreco) from imovel where cdbairro = i.cdbairro);

--6) e fa�a uma lista dos imoveis com maior pre�o agrupado por bairro, cuja o maior
pre�o seja superior a media de pre�o dos imoveis.

select cdbairro, max(vlpreco) from


imovel group by cdbairro
having max(vlpreco) > (select avg(vlpreco) from imovel);

--7)Faca uma lista que tem preco igual ao menor preco de cada vendedor

select cdimovel, cdvendedor, vlpreco from imovel i


where vlpreco = (select min(vlpreco) from imovel where cdvendedor = i.cdvendedor);

--8)Faca uma lista com as ofertas dos imoveis com data do lancamento do imovel
inferior a 30 dias e superior a 180 dias, a contar de hoje e cujo o codigo do
vendedor seja 2.
select * from oferta

select i.cdimovel, o.cdcomprador, i.dtlancto from imovel i, oferta o where


i.cdimovel=o.cdimovel and i.dtlancto between current_date - 180 and current_date -
30 and i.cdvendedor = 2;

--Homework
--faca uma lista com as ofertas dos imoveis que tem o preco igual ao menor preco de
todos os vendedores, exceto as ofertas do proprio comprador

--10) fa�a uma lista com ofertas menores que todas as ofertas do comprador 2,
exceto as ofertas do procpio comprador,

--11)

Você também pode gostar