GORMを使用して列の合計を計算し、Golangでスキャンする方法は?

Susan Sarandon
リリース: 2024-10-24 02:31:29
オリジナル
512 人が閲覧しました

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>
ログイン後にコピー

このコードでは、給与列のデータ型に応じて、型 int64 または int の単一の Salary フィールドを持つカスタム構造体 NResult を定義します。 。 Raw メソッドを使用して SELECT SUM(salary) FROM people クエリを直接実行し、Scan 関数を使用して結果を取得し、NResult 構造体にマップします。

この改訂されたコードは、給与の合計を正しく取得します。列を作成し、JSON レスポンスとして返します。

以上がGORMを使用して列の合計を計算し、Golangでスキャンする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!