- Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 12 anos, 8 meses atrás por norro.
-
AutorPosts
-
21 de março de 2012 às 3:38 pm #103144norroParticipante
pessoal estou tentando resolver uma lista de exercicios pra eu ver se consigo aprender PL/SQL, começei a fazer essas querys e consigo faze-las em parte. Tipo eu consigo fazer a metade delas. Aqui vai duas que eu to com dúvida.
Liste os cargos dos funcionários que possuem salário superior a R$ 1.000,00 e que venderam, no mês de outubro de 2012, mais de R$ 10.000,00 em produtos.
select cargo.car_descricao from cargo, funcionarios
where cargo.car_codigo = funcionarios.fun_car_codigo
and funcionarios.fun_salario > 1000
[b]
Obtenha os clientes com quantidade de pontos superior a 10000 e que no ano de 2011 realizaram compras com valores inferiores a R$ 5.000.[/b]
select pessoas.pss_nome from pessoas, clientes
where pessoas.pss_codigo = clientes.cli_pss_codigo
and clientes.cli_pontos > 1000alguém sabe como posso completa-las ? tipo a lógica ?
as tabelas que eu criei são cargo, clientes, funcionários,produto, pessoas, venda, produto_vendadesde já agradeço.
21 de março de 2012 às 4:19 pm #103146rmanParticipante@norro
Esse tipo de consulta não precisa de PL/SQL, SQL puro já é o suficiente.
Para ajudar nessas consultas poste um modelo relacional, ai fica mais fácil.
21 de março de 2012 às 4:36 pm #103148norroParticipante21 de março de 2012 às 8:59 pm #103174rmanParticipante@norro
Acho que ficou faltando algo na entidade VENDA, eu assumi que no lugar do COD_PESSOA o correto é COD_PESSOA_CLIENTE e COD_PESSOA_FUNCIONARIO.
Segue a solução:
1-
SELECT C.DESCRICAO
FROM CARGO C
WHERE EXISTS(
SELECT 1
FROM FUNCIONARIO F
WHERE F.COD_CARGO = C.COD_CARGO
AND F.SALARIO > 1000
AND EXISTS(
SELECT 1
FROM PESSOA P
WHERE P.COD_PESSOA = F.COD_PESSOA
AND (
SELECT SUM(TOTAL)
FROM VENDA V
WHERE V.COD_PESSOA_FUNCIONARIO = P.COD_PESSOA
AND EXTRACT(YEAR FROM V.DATA) = 2012
AND EXTRACT(MONTH FROM V.DATA) = 10
) > 10000
)
)
2-
SELECT P.NOME
FROM PESSOA P
WHERE EXISTS(
SELECT 1
FROM CLIENTE C
WHERE C.COD_PESSOA = P.COD_PESSOA
AND C.PONTOS > 10000
)
AND ANY(
SELECT TOTAL
FROM VENDA V
WHERE V.COD_PESSOA_CLIENTE = P.COD_PESSOA
AND EXTRACT(YEAR FROM V.DATA) = 2011
) < 5000
21 de março de 2012 às 9:46 pm #103178norroParticipanterman muito obrigado. vou tentar aqui pra ver se deu certo. Obrigado mesmo. tenho só mais uma duvida mas só vou perguntar se eu conseguir resolver essas. pra não ficar aperriando hehe. e tem outra questão só que essa eu consegui fazer !! vou por também(pra ficar de apoio pra quem tiver duvidas).
até breve.22 de março de 2012 às 1:38 am #103183norroParticipantebem estou aqui como prometi. Consegui completar essas 2 querys.
aqui abaixo esta uma das querys que ja estava feita. 🙂nela eu pego os funcionarios que tem endereco CABO na descricao e que venderam mais de 1000 em produtos para moradores que tem TORRE como endereco .
select
SUM(ven_total),
NVL(pss_fone,'sem telefone')
FROM
pessoas, vendas,
WHERE
pessoas.pss_endereco LIKE '%CABO%'
AND pessoas.pss_endereco LIKE '%TORRE%'
AND funcionarios.fun_pss_codigo = pessoas.pss_codigo
AND clientes.cli_pss_codigo = pessoas.pss_codigo
GROUP BY
NVL(pessoas.pss_fone)
HAVING
SUM(vendas.ven_total) > 1000aqui vai mais duas que, uma eu fiz mais não estou conseguindo rodar… da um erro nela diz que o from ta errado.
— 1 Liste o valor total de vendas realizadas por TIPO de cliente,
–devendo a listagem diferenciar Pessoas jurídicas e Pessoas Físicas
–com estes rótulos específicos retornados na consulta.
select sum(ven_total)
case
when
pss_tipo = 'F'
then
'Fisica'
when
pss_tipo ='J'
then
'Juridica'
end
from estudo.pessoas, estudo.vendas
where estudo.vendas.ven_cli_pss_codigo = estudo.pessoas.pss_codigo
group by estudo.pessoas.pss_codigo, estudo.pessoas.pss_endereco, estudo.pessoas.pss_tipoe agora vem minha principal dúvida. Alguem pode me ajudar em como criar um cursor pra retornar a quantidade total de produtos que foram vendidos em cada mes desse ano ?
-
AutorPosts
- Você deve fazer login para responder a este tópico.