TransWikia.com

¿Cómo calcular el total en MySQL?

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;

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP