You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用GROUP BY和HAVING统计当日商务人员预约数问题求助

错误原因
  • 行级过滤逻辑不应该写在HAVING子句中:HAVING是对GROUP BY分组后的聚合结果做过滤,日期过滤属于单条记录的前置过滤,需要放到WHERE子句中
  • 字段名错误加了单引号:date('created_at')会把created_at识别为字符串常量,而非表字段,永远无法匹配到当前日期
  • 未查询分组字段:SELECT子句只返回了统计数量,缺少商务人员ID字段,无法对应到每个商务的统计结果
正确原生MySQL查询

如果只需要返回商务ID和对应数量,后续自行拼接格式:

SELECT id_comercial, COUNT(id) AS appoint_count
FROM cita
WHERE DATE(created_at) = CURDATE()
GROUP BY id_comercial;

如果需要直接在SQL中拼接成你需要的commercial X - Y格式:

SELECT CONCAT('commercial ', id_comercial, ' - ', COUNT(id)) AS result
FROM cita
WHERE DATE(created_at) = CURDATE()
GROUP BY id_comercial;

注:你提供的测试数据中所有记录的created_at都是2020-08-11,测试时可以把CURDATE()替换为'2020-08-11'即可看到统计结果。

Laravel Eloquent 查询

首先确保你已经创建了对应cita表的模型App\Models\Cita,查询代码如下:

use App\Models\Cita;
use Illuminate\Support\Facades\DB;

$statistics = Cita::select('id_comercial', DB::raw('COUNT(id) as appoint_count'))
    ->whereRaw('DATE(created_at) = CURDATE()')
    ->groupBy('id_comercial')
    ->get();

// 拼接成需要的格式
$formatted = $statistics->map(function ($item) {
    return "commercial {$item->id_comercial} - {$item->appoint_count}";
})->toArray();

内容的提问来源于stack exchange,提问作者scorpions78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:45:04