Page 1 of 1
realizar una suma en Mysql
Posted: Mon Sep 14, 2020 2:48 pm
by Adolfredo Martinez
Hola amigos del forum.
Estoy tratando de hacer una consulta donde sumo varias columnas, para obtener un resultado asi:
SUM(pagos.INDUSTRIA+pagos.AVISOS+pagos.BOMBERO+pagos.MORA+pagos.AUTORETEN) AS impuestos
Resulta en las columnas que no tengo valores no realiza las operacion, pero cuando todas las columnas tienen valores, si realiza la operacion.
Gracias por la atención prestada
Re: realizar una suma en Mysql
Posted: Mon Sep 14, 2020 4:07 pm
by xmanuel
Comprueba previamente que no sean null y si lo son asigna 0...
La funcion es if() y funciona exactamente como la de Harbour.
No lo voy a hacer todos pero mira...
SUM( if( pagos.INDUSTRIA is null, 0, pagos.INDUSTRIA ) +pagos.AVISOS+pagos.BOMBERO+pagos.MORA+pagos.AUTORETEN) AS impuestos
Re: realizar una suma en Mysql solucionado
Posted: Mon Sep 14, 2020 5:58 pm
by Adolfredo Martinez
Gracias por contestar rapido.
así fue la solución:
IFNULL(SUM(pagos.INDUSTRIA),0)+IFNULL(SUM(pagos.AVISOS),0)+ IFNULL(SUM(pagos.BOMBERO),0)+IFNULL(SUM(pagos.MORA),0)+ IFNULL(SUM(pagos.AUTORETEN),0) AS TOTALPAGADO
Gracias
Re: realizar una suma en Mysql
Posted: Tue Sep 15, 2020 1:27 pm
by Adolfo
Mas sencillo y directo usando funcion propia de MYSQL/MARIADB y mas rapida.
select sum(coalesce(pagos.INDUSTRIA,0))......
Re: realizar una suma en Mysql
Posted: Wed Sep 16, 2020 5:11 am
by nageswaragunupudi
Both MySQL and MariaDB support both IFNULL( e1, e2 ) and COALESCE( e1, e2, e3, ..., eN ).
COALESCE(...) is an ANSI SQL function and works the same way with many servers (with a few exceptions like MSAcess ).
IFNULL() supports only 2 arguments, whereas COALESCE() supports multiple arguments.
IFNULL() is limited to MySQl/MariaDB and not available with many other SQL servers. For this reason, many programmers who program for different SQL servers habitually use COALESCE(). Programmers who program for MySql/MariaDB only use IFNULL() mostly.
Re: realizar una suma en Mysql
Posted: Wed Sep 16, 2020 7:20 pm
by Adolfredo Martinez
Mr Rao y Adolfo
Gracias por esa aclaración.