Heim >Backend-Entwicklung >Golang >Wie kann ich mit GORM und Scan die Summe eines Spaltenwerts abrufen?

Wie kann ich mit GORM und Scan die Summe eines Spaltenwerts abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-23 23:08:30985Durchsuche

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

Abrufen der Summe der Gehaltsspalte mit GORM

In Ihrem Code versuchen Sie, die Summe der Gehaltsspalte aus einer Postgres-Tabelle mit dem Namen abzurufen „Menschen“, die GORM verwenden. Allerdings weist Ihr aktueller Ansatz einige Einschränkungen auf.

Um die Summe der Gehaltsspalte korrekt abzurufen, wird empfohlen, die Scan-Funktion von GORM zu verwenden, anstatt manuell eine SQL-Abfrage zu erstellen. Mit diesem Ansatz können Sie eine Struktur definieren, die das Ergebnis darstellt, das Sie abrufen möchten.

Beispiel:

<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>

In diesem Code:

  • Die SalarySum-Struktur definiert das erwartete Ergebnis der Abfrage. Es enthält ein einzelnes Feld „Sum“ vom Typ uint.
  • Die Zeile db.Table("people").Select("SUM(salary) AS sum") wählt die Summe der Gehaltsspalte aus und gibt ihr einen Alias als „Summe“ im Ergebnis.
  • Der Scan(&salarySum)-Teil scannt das Ergebnis in die SalarySum-Struktur.

Dieser aktualisierte Code sollte die Summe des Gehalts korrekt abrufen und zurückgeben Spalte aus der Tabelle „Personen“.

Das obige ist der detaillierte Inhalt vonWie kann ich mit GORM und Scan die Summe eines Spaltenwerts abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn