假设我有一张表users
,其中有数千条记录,每条记录都有name
。
我的目标是绘制一个显示最常见名称的饼图。例如,我想采用9个最常见的名称,并将其余的名称放在“其他”组中。
我无法弄清楚如何使用groupBy()
和take()
或其他任何方法来实现这一目标。
有什么想法吗?
答案 0 :(得分:0)
您可以尝试使用groupBy并计算raw
$groups = DB::table('users')
->select(DB::raw('count(*) as user_count, name'))
->groupBy('name')
->orderBy('user_count', 'desc') //lorder desc or asc
->limit(5) //number of groups
->get();
dd($groups); you will see the user_count and name
饼图的数据为user_count / total_user