GoDasturchi
Aggregations and Grouping

Aggregations and Grouping

Agregatsiya va guruhlash

Alohida yozuvlarni emas, ular haqidagi statistikani (jami, o'rtacha, soni) olish kerak bo'lganda, GORM Select, Group va Scanni birlashtiradi.

example.go
type CategoryTotal struct {
	Category string
	Total    int
	Count    int
}

var results []CategoryTotal

db.Model(&Order{}).
	Select("category, SUM(price) as total, COUNT(*) as count").
	Group("category").
	Scan(&results)

for _, r := range results {
	fmt.Println(r.Category, r.Total, r.Count)
}

Bu yerda natija to'g'ridan-to'g'ri Order modeliga emas, alohida kutish natijasi struct'iga (CategoryTotal) yoziladi — chunki SUM/COUNT natijasi haqiqiy Order qatoriga o'xshamaydi. Scan (Finddan farqli) — bu maxsus, model bo'lmagan natijalar uchun ishlatiladi. Select bilan xom SQL ifodasini (SUM(price) as total) yozish mumkin — bu GORM'ning "avtomatik" qismidan chiqib, to'g'ridan-to'g'ri SQL yozish nuqtasi.

Key Takeaway

Key Takeaway:

Select + Group + Scan — agregatlangan statistikani (yig'indi, soni, o'rtacha) alohida natija struct'iga olish uchun ishlatiladi.

NEXT UP

Scopes and Joins

Aggregations and Grouping

Agregatsiya va guruhlash

Alohida yozuvlarni emas, ular haqidagi statistikani (jami, o'rtacha, soni) olish kerak bo'lganda, GORM Select, Group va Scanni birlashtiradi.

example.go
type CategoryTotal struct {
	Category string
	Total    int
	Count    int
}

var results []CategoryTotal

db.Model(&Order{}).
	Select("category, SUM(price) as total, COUNT(*) as count").
	Group("category").
	Scan(&results)

for _, r := range results {
	fmt.Println(r.Category, r.Total, r.Count)
}

Bu yerda natija to'g'ridan-to'g'ri Order modeliga emas, alohida kutish natijasi struct'iga (CategoryTotal) yoziladi — chunki SUM/COUNT natijasi haqiqiy Order qatoriga o'xshamaydi. Scan (Finddan farqli) — bu maxsus, model bo'lmagan natijalar uchun ishlatiladi. Select bilan xom SQL ifodasini (SUM(price) as total) yozish mumkin — bu GORM'ning "avtomatik" qismidan chiqib, to'g'ridan-to'g'ri SQL yozish nuqtasi.

Key Takeaway

Key Takeaway:

Select + Group + Scan — agregatlangan statistikani (yig'indi, soni, o'rtacha) alohida natija struct'iga olish uchun ishlatiladi.

NEXT UP

Scopes and Joins