Sumar resultados de una consulta MySQL: Ejemplos

Sumar resultados de una consulta. En este artículo vamos a sumar resultados MySQL usando consulta SQL, más bien llamado la función de agregado de MySQL SUM, cuya finalidad es la de sumar los valores de una columna en una sentencia SELECT.

Sintaxis de MySQL SUM

Veamos la sintaxis extraída de su web oficial:

SUM([DISTINCT] expresion)

Si observan la sintaxis es muy sencilla solo tenemos que envolver con paréntesis el nombre de la columna de la cual queremos sacar la suma. Además, podemos usar DISTINCT para sumar los valores que no estén repetidos en los registros obtenidos.

Ejemplos de MySQL SUM

a) Consulta básica:

Solo debemos de envolver la columna a suma con paréntesis tal como se observa en el ejemplo.

SELECT SUM(Precios) FROM Productos;

b) Usando DISTINCT

En la consulta SELECT estamos usando SUM y DISTINCT para filtrar los valores distintos y estamos sacando la suma de todos los precios de los productos distintos.

SELECT SUM( DISTINCT Precios) FROM Productos;

c) Usando Where

En este ejemplo estamos obteniendo la suma de todos los precios distintos de los productos, es decir, los precios que sean iguales no se suman.

SELECT SUM(Precios) FROM Productos WHERE Categoria = 'Zapatos';

En este nuevo ejemplo estamos sacando la suma de todos los precios de los productos cuya categoría es ‘Zapatos’.

Sumar resultados de una consulta MySQL

Usando PDO PHP

Trataremos de obtener la suma de una columna de la tabla de base de datos. Sin embargo, usaremos PDO para realizar la consulta.

Como variable de conexión usaremos $db y el código será el siguiente:

<?php
$total_income_query = $db->prepare("select sum(credit) from accounts WHERE STR_TO_DATE(date, '%d/%m/%Y') BETWEEN STR_TO_DATE(:startDate, '%d/%m/%Y') AND STR_TO_DATE(:endDate, '%d/%m/%Y')");

$total_income_query->bindParam(':startDate',$startDate);
$total_income_query->bindParam(':endDate',$endDate);
$total_income_query->execute();

$total = $total_income_query->fetch(PDO::FETCH_NUM);

echo $total_income = $total[0];

?>

Segundo ejemplo con PDO

Aquí les dejare otro ejemplo usando PDO, algo más simple para que se entienda a la perfección la suma de registros obtenidos tras la consulta SQL.

$stmt = $handler->prepare("SELECT SUM(value) AS value_sum FROM codes");
$stmt->execute();

$row = $handler->fetchAll(PDO::FETCH_OBJ);
$sum = $row->value_sum;

Sumar resultados MySQL bajo condicional

Podemos darle un poco de dificultad al ejemplo y es colocando condicionales de tipo WHERE y GROUP BY. A continuación, veamos el ejemplo completo.

SELECT sku, nombre, SUM(cantidad) as Total
FROM tabla
WHERE sku = 1001
GROUP BY sku, nombre;

Pudieras hacerlo así:

  • Seleccionas las columnas deseadas sku y nombre
  • Dentro de la función SUM() pasas a la columna cantidad
  • Agrupas por sku y por nombre
  • Filtras con WHERE donde sku = 1001
    • En este último punto pudieras aplicar mas filtros valiéndose del operador lógico AND

Si deseas que la suma se realicé por todos los productos agrupándolos por su sku entonces solo remueve el WHERE de tu consulta quedando así:

SELECT sku, nombre, SUM(cantidad) as Total
FROM tabla
GROUP BY sku, nombre;

Usando MySQLi

Para obtener la suma de los registros obtenidos desde una consulta SQL se puede usar este script completo. Sin embargo, les recomiendo usar PDO por ser más robusto y seguro para conexiones con MySQLi.

Veamos el ejemplo completo

<?php

$db = mysqli_connect("localhost", "USER", "PASSWORD", "DATABASE");

/* verificar la conexión */
if (mysqli_connect_errno()) {
die("Conexión fallida:" . mysqli_connect_error());
}

$sql = "SELECT SUM(horas) as total, nombre FROM tabla GROUP BY(nombre)";

$result = mysqli_query($db, $sql);

echo "<table border>";
while ($a = mysqli_fetch_assoc($result)){
echo "<tr>";
echo "<td>".$a['nombre']."</td>";
echo "<td>".$a['total']."</td>";
echo "</tr>";

}
echo '</table>';

Usando MySQLi Object-Oriented

Si están programado con MySQLi orientado a objetos aquí les dejo el ejemplo completo para realizar la suma de registros

$consulta="SELECT SUM(precio) as TotalPrecios FROM productos";
$resultado=$con -> query($consulta);
$fila=$resultado->fetch_assoc(); //que te devuelve un array asociativo con el nombre del campo

$TotalPrecios=$fila['TotalPrecios']; //Este es el valor que acabas de calcular en la consulta

Conclusión

Hemos logrado sumar resultados MySQL a través de una consulta usando PDO y MySQLi. Por lo tanto, el más recomendado es PDO.
La implementación de la suma es muy sencilla y en este artículo hemos usado la cláusula SUM de MySQL para que sume todos los registros obtenidos de la consulta a través de lenguaje PHP.

Sobre el autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio