Maison > développement back-end > Golang > le corps du texte

Comment calculer la somme d'une colonne à l'aide de GORM et Scan dans Golang ?

Susan Sarandon
Libérer: 2024-10-24 02:31:29
original
512 Les gens l'ont consulté

How to Calculate Sum of a Column Using GORM and Scan in Golang?

Calcul de la somme de la colonne de salaire dans une table GORM

Travailler avec des bases de données relationnelles comme PostgreSQL à l'aide de Golang implique souvent de récupérer des valeurs agrégées. Dans ce cas, calculer la somme d'une colonne, telle que la colonne salaire, est une tâche courante.

Code initial et problème

Le code fourni tente de calculer la somme de la colonne salaire de la table « personnes » mais rencontre une erreur. Il utilise l'instruction SELECT avec SUM(salary) pour récupérer le résultat et lie la valeur à la structure NewPerson. Cependant, cette approche est incorrecte puisque NewPerson n'a pas de champ de salaire et que la requête tente de mapper le résultat directement à la structure.

Code révisé à l'aide de Scan

Pour résoudre ce problème, une approche différente est nécessaire. Golang fournit la fonction Scan, qui permet aux développeurs de récupérer les résultats d'une requête et de les mapper à une structure de données personnalisée. Voici une version révisée du code qui utilise Scan :

<code class="go">type NResult struct {
    Salary int64 // or int, depending on the data type
}

func GetSalarySum(c echo.Context) error {
    db, err := gorm.Open("postgres", "...")
    checkError(err)
    defer db.Close()

    query := "SELECT SUM(salary) FROM people"

    var result NResult
    if err := db.Table("people").Raw(query).Scan(&result).Error; err != nil {
        fmt.Println("error->", err)
    }

    return c.JSON(http.StatusOK, result)
}</code>
Copier après la connexion

Dans ce code, nous définissons une structure personnalisée NResult avec un seul champ Salaire de type int64 ou int, selon le type de données de la colonne salaire . Nous utilisons la méthode Raw pour exécuter directement la requête SELECT SUM(salary) FROM people, et la fonction Scan pour récupérer le résultat et le mapper à la structure NResult.

Ce code révisé récupère correctement la somme du salaire. et la renvoie sous forme de réponse JSON.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!