首頁 > 後端開發 > Golang > 如何在 Golang 中使用 GORM 和 Scan 計算列的總和?

如何在 Golang 中使用 GORM 和 Scan 計算列的總和?

Susan Sarandon
發布: 2024-10-24 02:31:29
原創
589 人瀏覽過

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

計算 GORM 表中薪資列的總和

使用 Golang 處理 PostgreSQL 等關聯式資料庫通常涉及擷取聚合值。在這種情況下,計算某一列(例如薪資列)的總和是一項常見任務。

初始代碼和問題

提供的代碼嘗試計算工資列的總和從“people”表但遇到錯誤。它使用 SUM(salary) 的 SELECT 語句來檢索結果並將該值綁定到 NewPerson 結構。但是,這種方法是不正確的,因為 NewPerson 沒有工資字段,並且查詢嘗試將結果直接映射到結構。

使用 Scan 修改程式碼

要解決此問題,需要不同的方法。 Golang 提供了 Scan 功能,允許開發人員檢索查詢結果並將其對應到自訂資料結構。以下是使用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>
登入後複製

在此程式碼中,我們定義一個自訂結構體NResult,其中包含一個類型為int64 或int 的Salary 字段,具體取決於薪資列的資料型態。我們使用 Raw 方法直接執行 SELECT SUM(salary) FROM people 查詢,並使用 Scan 函數檢索結果並將其對應到 NResult 結構。

此修改後的程式碼正確檢索了薪資的總和欄位並將其作為 JSON 回應傳回。

以上是如何在 Golang 中使用 GORM 和 Scan 計算列的總和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板