Assuming your model and data is 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 sum()
aggregation function combined with the GROUP BY
clause:
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;
Output:
| 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 in SQLFiddle