計算 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中文網其他相關文章!

Go語言的核心特性包括垃圾回收、靜態鏈接和並發支持。 1.Go語言的並發模型通過goroutine和channel實現高效並發編程。 2.接口和多態性通過實現接口方法,使得不同類型可以統一處理。 3.基本用法展示了函數定義和調用的高效性。 4.高級用法中,切片提供了動態調整大小的強大功能。 5.常見錯誤如競態條件可以通過gotest-race檢測並解決。 6.性能優化通過sync.Pool重用對象,減少垃圾回收壓力。

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

關於SQL查詢結果排序的疑惑學習SQL的過程中,常常會遇到一些令人困惑的問題。最近,筆者在閱讀《MICK-SQL基礎�...

golang ...

Go語言中如何對比並處理三個結構體在Go語言編程中,有時需要對比兩個結構體的差異,並將這些差異應用到第�...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器