Subselect no firebird
Bom dia,
tenho as seguintes tabelas:
produtos
codigo descricao tipo
1 prato 1
2 caderno 2
3 faca 1
4 lapis 2
5 borracha 2
6 colher 1
7 garfo 1
8 regua 2
9 caneta 2
10 tesoura 2
vendas
data codigoproduto valor
18/04/21 1 10
18/04/21 2 5
18/04/21 2 10
19/04/21 1 10
19/04/21 1 5
19/04/21 1 5
19/04/21 2 10
Estou suando o Firebird e preciso de uma cosulta que me retorne as quantidades de tipos por data da venda e o valor total por tipo. Tipo assim: dia 18/04/21 foram vendidos 1 produto do tipo 1 com valor total de 10 e 2 produtos do tipo 2 com valor de 15.
Agradeço antecipadamente a quem puder ajudar.
tenho as seguintes tabelas:
produtos
codigo descricao tipo
1 prato 1
2 caderno 2
3 faca 1
4 lapis 2
5 borracha 2
6 colher 1
7 garfo 1
8 regua 2
9 caneta 2
10 tesoura 2
vendas
data codigoproduto valor
18/04/21 1 10
18/04/21 2 5
18/04/21 2 10
19/04/21 1 10
19/04/21 1 5
19/04/21 1 5
19/04/21 2 10
Estou suando o Firebird e preciso de uma cosulta que me retorne as quantidades de tipos por data da venda e o valor total por tipo. Tipo assim: dia 18/04/21 foram vendidos 1 produto do tipo 1 com valor total de 10 e 2 produtos do tipo 2 com valor de 15.
Agradeço antecipadamente a quem puder ajudar.
José Oquendo
Curtidas 0
Respostas
Emerson Nascimento
18/04/2021
você não fez qualquer tentativa?
publique o que você fez e o resultado que obteve; e porque esse resultado não é satisfatório; etc.
assim você evita de receber como resposta algo que já tentou executar, poupando teu tempo e de quem quer te ajudar.
de qualquer modo, segue uma tentativa:
publique o que você fez e o resultado que obteve; e porque esse resultado não é satisfatório; etc.
assim você evita de receber como resposta algo que já tentou executar, poupando teu tempo e de quem quer te ajudar.
de qualquer modo, segue uma tentativa:
select v.data, p.tipo, sum(v.valor) valor from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data, p.tipo
GOSTEI 0
José Oquendo
18/04/2021
você não fez qualquer tentativa?
publique o que você fez e o resultado que obteve; e porque esse resultado não é satisfatório; etc.
assim você evita de receber como resposta algo que já tentou executar, poupando teu tempo e de quem quer te ajudar.
de qualquer modo, segue uma tentativa:
publique o que você fez e o resultado que obteve; e porque esse resultado não é satisfatório; etc.
assim você evita de receber como resposta algo que já tentou executar, poupando teu tempo e de quem quer te ajudar.
de qualquer modo, segue uma tentativa:
select v.data, p.tipo, sum(v.valor) valor from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data, p.tipo
Fiz tentativa sim, mas, como não obtive exito, postei aqui.
a sql seria algo pareceido com isso:
select v.data, (select count(*) from produtos where p.codigo = v.produto and p.tipo = 1) as tipo_1, (select count(*) from produtos where p.codigo = v.produto and p.tipo = 2) as tipo_2, sum(v.valor) from vendas v inner join produtos p on p.codigo = v.produto group by v.data,tipo_1,tipo_2
só q desta forma, nem executa.
Como disse na questão inicial, a ideia é q a sql retorne a quantidade de produtos por tipo vendido agrupados por data e por tipo.
GOSTEI 0
Emerson Nascimento
18/04/2021
se a resposta puder ser em linhas:
para mostrar em colunas, a instrução abaixo funciona se houver somente 2 tipos:
select v.data, p.tipo, count(p.codigo) qtd, sum(v.valor) valor from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data, p.tipo
para mostrar em colunas, a instrução abaixo funciona se houver somente 2 tipos:
select v.data, sum(case when p.tipo = 1 then 1 else 0 end) tipo1_qtd, sum(case when p.tipo = 1 then v.valor else 0 end) tipo1_valor1, sum(case when p.tipo = 2 then 1 else 0 end) tipo2_qtd, sum(case when p.tipo = 2 then v.valor else 0 end) tipo2_valor1 from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data
GOSTEI 0
José Oquendo
18/04/2021
se a resposta puder ser em linhas:
para mostrar em colunas, a instrução abaixo funciona se houver somente 2 tipos:
select v.data, p.tipo, count(p.codigo) qtd, sum(v.valor) valor from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data, p.tipo
para mostrar em colunas, a instrução abaixo funciona se houver somente 2 tipos:
select v.data, sum(case when p.tipo = 1 then 1 else 0 end) tipo1_qtd, sum(case when p.tipo = 1 then v.valor else 0 end) tipo1_valor1, sum(case when p.tipo = 2 then 1 else 0 end) tipo2_qtd, sum(case when p.tipo = 2 then v.valor else 0 end) tipo2_valor1 from vendas v inner join produtos p on p.codigo = v.codigoproduto group by v.data
a opção de mostra em colunas caiu como uma luva, muito obrigado.
GOSTEI 0