Problema:
deseja multiplicar valores de duas colunas de uma tabela.
Exemplo:
Nosso banco de dados tem uma tabela chamada
purchase
com dados nas seguintes colunas:id
, name
, price
, quantity
e discount_id
. id | nome | preço | quantidade | discount_id |
---|---|---|---|---|
1 | caneta | 7 | 3 | 1 |
2 | caderno | 5 | 8 | 2 |
3 | borracha | 11 | 3 | 1 |
4 | estojo de lápis | 24 | 2 | 3 |
Vamos multiplicar o preço pela quantidade dos produtos para descobrir quanto você pagou por cada item do seu pedido.
Solução:
SELECT name, price*quantity AS total_price FROM purchase;
Esta consulta retorna registros com o nome do produto e seu preço total:
nome | total_price |
---|---|
caneta | 21 |
caderno | 40 |
borracha | 33 |
estojo de lápis | 48 |
Discussão:
Você precisa selecionar o nome de cada registro (no nosso caso,
name
) e calcule para ela o resultado da multiplicação de uma coluna numérica por outra (price
e quantity
)? Tudo o que você precisa fazer é usar o operador de multiplicação (*) entre as duas colunas do multiplicando (price
* quantity
) em um simples SELECT
inquerir. Você pode dar a este resultado um alias com o AS
palavra-chave; em nosso exemplo, demos à coluna de multiplicação um alias de total_price
. Observe que você também pode usar dados de duas colunas provenientes de tabelas diferentes. Temos outra tabela em nosso banco de dados chamada
discount
que tem colunas chamadas id
e value
; o último representa o desconto percentual no item com o ID fornecido. id | valor |
---|---|
1 | 10 |
2 | 20 |
3 | 30 |
Veja o exemplo abaixo.
Solução:
SELECT p.name, p.price*p.quantity*(100-d.value)/100 AS total_price FROM purchase p JOIN discount d ON d.id=p.discount_id;
Aqui está o resultado:
nome | total_price |
---|---|
caneta | 18,90 |
caderno | 32,00 |
borracha | 29,70 |
estojo de lápis | 33,60 |
Como você pode ver, é muito fácil multiplicar valores de diferentes tabelas unidas. Em nosso exemplo acima, multiplicamos o preço de cada produto por sua quantidade de uma tabela (
purchase
) e, em seguida, multiplique esse preço total pelo desconto percentual usando o discount
tabela.