En este post sobre Gorm (un ORM de Go, Golang) te muestro cómo obtener la sumatoria (usando sum de SQL) para escanearla y leerla en una variable, de una manera sencilla.
La consulta SQL
Normalmente la consulta es, por ejemplo, como se ve a continuación. Puede o no tener where
, es solo un ejemplo.
select coalesce(sum(retiro_de_ahorros.monto), 0) as total
from retiro_de_ahorros
where id_empleado = ?
Como ves solo tenemos una columna que es el total, así que solo tenemos una fila y una columna.
Recuerda que usamos coalesce por si no hay datos para evitar un null
.
Escanear sum con Gorm
Para hacerlo con Gorm simplemente usamos el método Raw para enviar la consulta, luego invocamos a Row
para obtener una fila y finalmente invocamos a Scan
para escanear la única fila dentro de la variable.
El ejemplo anterior quedaría así:
var total float64
var err error
idEmpleado := 1 // Recuerda que el where no es obligatorio; simplemente así es mi ejemplo
bd, err := obtenerBd()
if err != nil {
return
}
defer bd.Close()
fila := bd.Raw(`select coalesce(sum(retiro_de_ahorros.monto), 0) as total
from retiro_de_ahorros
where id_empleado = ?`, idEmpleado).Row()
err = fila.Scan(&total)
Con esto también podemos obtener otras cosas que impliquen solamente al escaneo de una variable en Gorm.