Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriel Melo

having ou where oracle

Recommended Posts

Pessoal, estou estudando SQL e estou resolvendo uns exercícios por conta própria. E acabei ficando empacado nesse:

10) Apresente o SQL que lista em tela o nome componente e a quantidade de medicamentos vinculados a este componente que possui estoque superior a 5 e a quantidade de medicamentos vinculados a este componente que possui estoque inferior a 2.

Não consigo fazer a comparação do estoque >5 e estoque <2. Se utilizo o where não funciona, se utilizo having também

Eis o que fiz até agora:

 select distinct c.nomecom from tbcomponentes c
 inner join tbcomponentesprod cp on cp.fkcodcomp=c.pkcodcomp
 inner join tbmedicamento m on cp.fkcodmed=pkcodmed group by c.nomecom

Script:

drop table tbcomponentesprod;
drop table tbrelforncomp;
drop table tbmedicamento;
drop table tbcomponentes;
drop table tbfornecedor;
drop table tbcategoria;
create table tbfornecedor(
pkcodforn integer not null,
nomeforn varchar2(30) not null
);
alter table tbfornecedor add constraint tbfornecedorpk 
primary key (pkcodforn);
create table tbcomponentes(
pkcodcomp integer not null,
nomecom varchar2(30) not null,
custo number(15,2)
);
alter table tbcomponentes add constraint tbcomponentespk 
primary key (pkcodcomp);
create table tbcategoria(
pkcodcat integer not null,
nomecat varchar2(30) not null
);
alter table tbcategoria add constraint tbcategoriapk 
primary key (pkcodcat);
create table tbrelforncomp(
pkcodrel integer not null,
fkcodforn integer,
fkcodcomp integer,
dataultcompra date
);
alter table tbrelforncomp add constraint tbrelforncomppk 
primary key (pkcodrel);
alter table tbrelforncomp add constraint tbrelforncomp_fkcodforn 
foreign key (fkcodforn) references tbfornecedor(pkcodforn);
alter table tbrelforncomp add constraint tbrelforncomp_fkcodcomp 
foreign key (fkcodcomp) references tbcomponentes(pkcodcomp);
create table tbmedicamento(
pkcodmed integer not null,
nomemed varchar(30),
estoque integer,
valorvenda number(15,2),
fkcodcat integer
);
alter table tbmedicamento add constraint tbmedicamentopk 
primary key (pkcodmed);
alter table tbmedicamento add constraint tbmedicamento_fkcodcat 
foreign key (fkcodcat) references tbcategoria(pkcodcat);
create table tbcomponentesprod(
pkcodcompprod integer not null,
fkcodmed integer,
fkcodcomp integer,
quant number(15,2)
);
alter table tbcomponentesprod add constraint tbcomponentesprodpk 
primary key (pkcodcompprod);
alter table tbcomponentesprod add constraint tbcomponentesprod_fkcodmed 
foreign key (fkcodmed) references tbmedicamento(pkcodmed);
alter table tbcomponentesprod add constraint tbcomponentesprod_fkcodcomp 
foreign key (fkcodcomp) references tbcomponentes(pkcodcomp);
insert into tbcategoria(pkcodcat , nomecat ) values (1,'Controlado');
insert into tbcategoria(pkcodcat , nomecat ) values (2,'Meia Boca');
insert into tbcategoria(pkcodcat , nomecat ) values (3,'Liberdo');
insert into tbcategoria(pkcodcat , nomecat ) values (4,'Ja era');
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (20,'Esdudeipasseidol',40,20.48,2);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (21,'Melasqueiticida',7,31.74,1);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (22,'Rirareidezdenovosal',33,25.74,null);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (23,'Alopreimeferreinadol',28,21.55,1);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (24,'Assimaprovatan',15,82.74,null);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (25,'Jamosterminartrabalhoacida',08,2.99,3);
insert into tbmedicamento(pkcodmed, nomemed, estoque, valorvenda,fkcodcat) values (26,'Cadonazol',7,9.14,3);
insert into tbfornecedor(pkcodforn, nomeforn) values (1,'Silvio Santos');
insert into tbfornecedor(pkcodforn, nomeforn) values (2,'Gugu Liberato');
insert into tbfornecedor(pkcodforn, nomeforn) values (3,'Ratinho');
insert into tbfornecedor(pkcodforn, nomeforn) values (4,'Fausto Silva');
insert into tbfornecedor(pkcodforn, nomeforn) values (5,'Jo soares');
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (85,'Oleo de peroba',1.88);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (86,'Cevada',2.80);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (87,'Lupulo',7.80);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (88,'Agua',9.99);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (89,'Açucar',7.05);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (90,'Essência de baulinha',8.15);
insert into tbcomponentes(pkcodcomp, nomecom,custo) values (91,'Cacau',3.10);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (40,20,86,0.52);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (41,20,88,1.85);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (42,20,89,2.74);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (43,21,86,0.87);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (44,21,91,3.74);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (45,22,86,0.55);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (46,22,87,1.85);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (47,22,85,0.41);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (48,22,91,0.05);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (49,23,87,1.99);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (50,23,88,1.74);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (51,24,85,3.71);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (52,24,88,0.04);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (53,24,90,0.77);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (54,24,91,0.99);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (56,25,86,2.99);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (57,26,86,1.00);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (58,26,88,4.77);
insert into tbcomponentesprod( pkcodcompprod, fkcodmed, fkcodcomp , quant ) values (59,26,87,0.78);
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (1,1,86,'01/03/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (2,1,89,'04/08/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (3,3,86,'10/11/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (4,3,85,'20/11/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (5,5,88,'15/08/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (6,5,88,'15/08/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (7,4,88,'07/08/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (8,4,87,'07/08/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (9,4,86,'14/10/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (10,4,91,'14/10/2016');
insert into tbrelforncomp(pkcodrel, fkcodforn, fkcodcomp, dataultcompra) values (11,4,85,'02/09/2016');

Compartilhar este post


Link para o post
Compartilhar em outros sites
10) Apresente o SQL que lista em tela o nome componente e a 
quantidade de medicamentos  vinculados a este componente que 
possui estoque superior a 5 e a quantidade de medicamentos 
vinculados a este componente  que possui estoque inferior a  2.

Faça um join entre tbmedicamento, tbcomponentes e tbcomponentesprod

use um GROUP BY e SUM para somar tbcomponentes .custo

use o HAVING com BETWEEN para i intervalo requerido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.