Stack Overflow en español Asked by akko on December 16, 2021
tengo la siguiente información en una tabla de MySQL, lo que necesito es calcular el total sumando el resultado de multiplicar la cantidad por el precio correspondiente.
En caso de que Precio con descuento
sea diferente de NULL
se utilizará para poder hacer el cálculo.
| Cantidad | Precio | Precio con descuento |
|------------|--------|----------------------|
| 1 | 10 | NULL |
| 2 | 10 | 5 |
| 10 | 2 | 1 |
1 * 10 = 10
2 * 5 = 10
10 * 1 = 10
TOTAL: 30
Actualmente tengo:
SELECT cantidad, precio, precio_descuento FROM ventas WHERE cerrado = 1;
Puedes utilizar la función coalesce()
para multiplicar por uno u otro.
select cantidad
, precio
, precio_descuento
, cantidad * coalesce(precio_descuento, precio) total
from ventas
where cerrado = 1;
La función coalesce()
puede recibir N parámetros y te devuelve el valor del primer parámetro que no sea null
. En este caso, te devolverá el valor de precio_descuento
si no es null
, y si lo es, el valor de precio
.
Otra posibilidad es utilizar una sentencia case
para determinar cual campo utilizar:
select cantidad
, precio
, precio_descuento
, cantidad * case
when precio_descuento is null then precio
else precio_descuento
end total
from ventas
where cerrado = 1;
Finalmente, puedes utilizar una función if()
para lograr el mismo resultado
select cantidad
, precio
, precio_descuento
, cantidad * if(precio_descuento is null, precio, precio_descuento) total
from ventas
where cerrado = 1;
Si quieres el total de todas las ventas, aplica la función de agregado sum()
sobre este valor calculado, por ejemplo:
select sum(cantidad * coalesce(precio_descuento, precio)) TotalVentas
from ventas
where cerrado = 1;
Answered by jachguate on December 16, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP