golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)
計(jì)算表lb_ytt_user_money_log 中,字段money的和
代碼如下:
var total_money []int sqlstr := `select SUM(money) as total_money from lb_ytt_user_money_log where user_id = ? and l_type = 1 and status=1 and (create_time> ? and create_time <= ?)` Db.Raw(sqlstr, userID, beginTimeNum, endTimeNum).Pluck("SUM(money) as total_money", &total_money)
Pluck
將模型中的單個列作為地圖查詢,如果要查詢多個列,可以使用Scan
Db.Raw(sqlstr, userID, beginTimeNum, endTimeNum).Pluck("SUM(money) as total_money", &total_money)
如果把Db.Pluck換成Db.scan得出的就是0
補(bǔ)充:golang gorm 解決mysql sum函數(shù)列有null時(shí) 報(bào)錯 sconverting NULL to int64 is unsupported
當(dāng)我們查詢orders表order_amount字段的和時(shí),如果order_amount字段有null值,則gorm會報(bào)錯sql:
Scan error on column index 0, name "sum(order_amount)": converting NULL to int64 is unsupported
var price int64
db.Table("orders").Select("sum(order_amount)").Scan(&price)
解決方法:
使用gorm的Pluck 從數(shù)據(jù)庫查詢單個列,并將結(jié)果掃描到切片,在循環(huán)取出值計(jì)算總和,這樣即使有null值,也能正確計(jì)算和,不會因?yàn)閟um函數(shù)的機(jī)制導(dǎo)致報(bào)錯
//創(chuàng)建一個存儲查詢結(jié)果的切片 var result []int64 var sum int64 db.Table("orders").Pluck("order_amount",&result ) for _,v := range result{ sum += v }
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼
這篇文章主要介紹了Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10go語言發(fā)送smtp郵件的實(shí)現(xiàn)示例
這篇文章主要介紹了go發(fā)送smtp郵件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存的方法
這篇文章主要介紹了使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存,本文比較了字節(jié)緩存和結(jié)構(gòu)體緩存的優(yōu)劣勢,介紹了緩存穿透、緩存錯誤、緩存預(yù)熱、緩存?zhèn)鬏敗⒐收限D(zhuǎn)移、緩存淘汰等問題,并對一些常見的緩存庫進(jìn)行了基準(zhǔn)測試,需要的朋友可以參考下2022-05-05Go語言通過Luhn算法驗(yàn)證信用卡卡號是否有效的方法
這篇文章主要介紹了Go語言通過Luhn算法驗(yàn)證信用卡卡號是否有效的方法,實(shí)例分析了Luhn算法的原理與驗(yàn)證卡號的使用技巧,需要的朋友可以參考下2015-03-03如何在 ubuntu linux 上配置 go 語言的 qt 開發(fā)環(huán)境
這篇文章主要介紹了如何在 ubuntu linux 上配置 go 語言的 qt 開發(fā)環(huán)境,本文分步驟通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04詳解Go多協(xié)程并發(fā)環(huán)境下的錯誤處理
這篇文章主要介紹了詳解Go多協(xié)程并發(fā)環(huán)境下的錯誤處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Go語言HTTPServer開發(fā)的六種方式小結(jié)
Golang的Server開發(fā)顯得非常簡單,有很多種方式,本文就介紹了Go語言HTTPServer開發(fā)的六種方式,具有一定的參考價(jià)值,感興趣的可以了解一下2021-11-11