Laravel 数据库 聚合 Join 查找语句小记录

本文介绍了如何在SQL中使用基本的聚合函数如count、max、min、avg和sum,并展示了如何结合join、group by等操作进行更复杂的查询,例如计算每个用户的总积分或按类型分组计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用聚合方法,如 count, max, min, avg 及 sum。

$res=DB::table('question_user')->count();
 
$score=DB::table('question_score')->max('score');
 
$score= DB::table('question_score')->min('score');
 
$score= DB::table('question_score')->avg('score');
 
$total = DB::table('question_score')->sum('score');

但是对于复杂的情况(比如join 后的结果,其结果并不是个objet)。就不能直接使用上述的方法
解决方法:db::raw(’’) 有些时候您需要使用 raw expression 在查询语句里,这样的表达式会成为字串插入至查询中,因此要小心勿建立任何 SQL 注入的攻击点。要建立 raw expression,您可以使用 DB::raw 方法:
1、sum+join+groupBy eg:计算每个用户的总积分

 $rankinglist = DB::table('question_user')->join('question_score', 'question_user.Id', '=', 'question_score.uid')->select(
                DB::raw('SUM(question_score.score) as score,question_user.*')
        )->groupBy("question_score.uid")->get()->toArray();

2.count+where+groupBy

$users = DB::table('question_user')
        ->select(DB::raw('count(*) as user_count, type'))
        ->where('type', '>', 1)
        ->groupBy('type')
        ->get()
        ->toArray();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值