我的數(shù)據(jù)庫中有一個表scans,其中記錄了用戶的掃描活動,并且用戶一天可以進(jìn)行多個活動。我正在尋找獲取特定用戶在幾天內(nèi)所有掃描的總和的最佳方法。我已經(jīng)在代碼中嘗試了以下操作,但我想我遺漏了一些東西,因為我想聚合當(dāng)天進(jìn)行的用戶的掃描。 DB::table('scans')->select(DB::raw('count(*) as total, scanner, created_at'))->where('scanner', 'Jon Snow')->groupBy('created_at')->get()=> Illuminate\Support\Collection {#3313 all: [ {#3304 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-26 19:43:58", }, {#3321 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-26 19:32:40", }, {#3327 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-28 19:44:18", }, {#3323 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-28 20:30:30", },所以代替這個: {#3304 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-26 19:32:58", }, {#3321 +"total": 1, +"scanner": "Jon Snow", +"created_at": "2020-07-26 19:43:40", },我想要這個: {#3304 +"total": 2, +"scanner": "Jon Snow", +"created_at": "2020-07-26", }, {#3304 +"total": 5, +"scanner": "Jon Snow", +"created_at": "2020-07-28", },
1 回答

白豬掌柜的
TA貢獻(xiàn)1893條經(jīng)驗 獲得超10個贊
問題:
目前您正在執(zhí)行groupBy(created_at)。由于幾乎所有掃描都有不同的日期時間,因此 groupBy 將無法按預(yù)期工作。
解決方案:
如果我理解正確的話,您需要按 create_at 的日期進(jìn)行 groupBy 而不需要時間。為此,您必須僅選擇日期時間列的日期部分。有兩種方法可以做到這一點(diǎn):
DB::raw('count(*) as total, DATE_FORMAT(created_at, "%Y-%m-%d") as someDate, scanner') ->where('scanner', 'Jon Snow') ->groupBy('someDate') ->get()
@編輯
你也可以這樣做DATE(created_at) as someDate
例子:
我的數(shù)據(jù)庫中插入了 4 個用戶:
2 個已創(chuàng)建_at => '2020-05-05 10:10:10'
2 個已創(chuàng)建_at => '2020-10-10 10:10:10'
結(jié)果:
Illuminate\Support\Collection {#1945
#items: array:2 [
0 => {#1952
+"count": 2
+"new_date": "2020-05-05"
}
1 => {#2092
+"count": 2
+"new_date": "2020-10-10"
}
]
}
- 1 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消