Maison >développement back-end >Golang >Comment récupérer la somme d'une valeur de colonne à l'aide de GORM et Scan ?

Comment récupérer la somme d'une valeur de colonne à l'aide de GORM et Scan ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-23 23:08:30982parcourir

How to Retrieve the Sum of a Column Value Using GORM and Scan?

Récupération de la somme de la colonne salaire à l'aide de GORM

Dans votre code, vous tentez de récupérer la somme de la colonne salaire à partir d'une table Postgres nommée "personnes" utilisant GORM. Cependant, votre approche actuelle présente certaines limites.

Pour récupérer correctement la somme de la colonne salaire, il est recommandé d'utiliser la fonction Scan de GORM au lieu de construire manuellement une requête SQL. Cette approche vous permet de définir une structure qui représente le résultat que vous souhaitez récupérer.

Exemple :

<code class="go">func GetSalarySum(c echo.Context) error {
    db, err := gorm.Open("postgres", "host=localhost port=5433 user=postgres dbname=testone password=root sslmode=disable")
    checkError(err)
    defer db.Close()

    type SalarySum struct {
        Sum uint `gorm:"column:sum"`
    }

    var salarySum SalarySum
    if err := db.Table("people").Select("SUM(salary) AS sum").Scan(&salarySum).Error; err != nil {
        fmt.Println("error->", err)
    }

    return c.JSON(http.StatusOK, salarySum)
}</code>

Dans ce code :

  • La structure SalarySum définit le résultat attendu de la requête. Il contient un seul champ "Sum" de type uint.
  • La ligne db.Table("people").Select("SUM(salary) AS sum") sélectionne la somme de la colonne salaire et l'alias comme "somme" dans le résultat.
  • La partie Scan(&salarySum) analyse le résultat dans la structure salaireSum.

Ce code mis à jour devrait correctement récupérer et renvoyer la somme du salaire colonne du tableau "personnes".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn