Laravel查询构建器:合并同日期数据并对score字段求和
解决方案
要实现指定日期范围内按日期合并、对score求和且不显示重复日期的需求,只需调整查询的字段选择与分组逻辑,具体修改如下:
修改后的查询代码
$scoreboard = HistoryPenjualan::select( DB::raw('DATE(tgl) as tanggal'), // 提取日期部分(若`tgl`本身是date类型,可直接写`tgl`) DB::raw('SUM(score) as totalScore') ) ->whereBetween('tgl', [$tglA, $tglB]) ->groupBy('tanggal') // 按日期分组,确保每个日期唯一 ->orderBy('tanggal', 'asc') // 可选:按日期升序排列,也可改为按totalScore排序 ->get();
关键说明
- 日期去重:通过
DATE(tgl)将datetime/timestamp类型的字段转换为纯日期格式,避免因时分秒差异导致的同一日期被拆分;如果你的tgl字段本身就是date类型,直接使用tgl即可。 - 分组求和:
groupBy('tanggal')确保同一日期的记录被合并为一行,SUM(score)则对该日期下的所有score值进行累加。 - 排序可选:根据需求可以调整
orderBy的字段,比如改为orderBy('totalScore', 'desc')按总分降序排列。
内容的提问来源于stack exchange,提问作者Retaker
相关产品推荐
相关产品推荐

