Assuming your model and your data are something like:
CREATE TABLE produto_venda
(
venda_id INTEGER,
prod_id INTEGER,
prod_unidade INTEGER
);
CREATE TABLE produto
(
prod_id INTEGER,
prod_nome TEXT,
prod_valor_compra NUMERIC,
prod_valor_venda NUMERIC,
prod_unidades INTEGER,
forn_id INTEGER
);
-- CADASTRO DOS PRODUTOS
INSERT INTO produto ( prod_id, prod_nome, prod_valor_compra, prod_valor_venda, prod_unidades, forn_id )
VALUES ( 10, 'Panela de Barro', 20.95, 40.25, 22, 15 );
INSERT INTO produto ( prod_id, prod_nome, prod_valor_compra, prod_valor_venda, prod_unidades, forn_id )
VALUES ( 20, 'Colher de Pau', 2.50, 4.20, 100, 15 );
INSERT INTO produto ( prod_id, prod_nome, prod_valor_compra, prod_valor_venda, prod_unidades, forn_id )
VALUES ( 30, 'Chaleira', 30.00, 50.50, 13, 15 );
-- VENDAS DE PANELAS DE BARRO
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 100, 10, 1 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 101, 10, 2 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 102, 10, 1 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 103, 10, 1 );
-- VENDAS DE COLHERES DE PAU
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 104, 20, 4 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 105, 20, 4 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 106, 20, 2 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 107, 20, 1 );
-- VENDAS DE CHALEIRAS
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 108, 30, 1 );
INSERT INTO produto_venda ( venda_id, prod_id, prod_unidade ) VALUES ( 109, 30, 1 );
You can use the aggregation function sum()
combined with the clause GROUP BY
:
SELECT
pv.prod_id AS id,
p.prod_nome AS nome,
p.prod_valor_venda AS valor,
sum(pv.prod_unidade) AS qts_vendidos,
sum(p.prod_valor_venda * pv.prod_unidade) AS total_vendido
FROM
produto_venda AS pv
JOIN
produto AS p ON ( p.prod_id = pv.prod_id )
GROUP BY
pv.prod_id,
p.prod_nome,
p.prod_valor_venda
ORDER BY
p.prod_nome;
Exit:
| id | nome | valor | qts_vendidos | total_vendido |
|----|-----------------|-------|--------------|---------------|
| 30 | Chaleira | 50.5 | 2 | 101 |
| 20 | Colher de Pau | 4.2 | 11 | 46.2 |
| 10 | Panela de Barro | 40.25 | 5 | 201.25 |
See working on Sqlfiddle
You are aware that this modeling is not normalized, right?
– Jefferson Quesado
I think this explanation may be good to understand about normal forms: https://answall.com/a/103894/64969
– Jefferson Quesado
I didn’t understand the new modeling. It’s like for an example with some tuples?
– Jefferson Quesado
I updated with print...
– Victorprvt
produto
anditem
are the same thing ? Tablesvenda_itens
,itens_venda
andproduto_venda
are the same thing ?– Lacobus