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

MySQL按agent_id分组统计销售数据:呼叫数、转化率等查询实现

解决销售报表SQL查询问题

嘿,我来帮你搞定这个卡住的SQL查询!你已经有了不错的开头,只需要用条件聚合来实现剩下的列,同时还要修正一个小笔误(你的WHERE子句里用了comm_ts,但表结构里是date字段哦)。

完整的SQL查询语句

SELECT 
    agent_id,
    COUNT(*) AS `Number of Calls`,
    COUNT(CASE WHEN type = 'sales' AND result = 'yes' THEN 1 END) AS `保存数`,
    SUM(CASE WHEN type = 'sales' AND result = 'yes' THEN value ELSE 0 END) AS `保存值总和`,
    CONCAT(ROUND((COUNT(CASE WHEN type = 'sales' AND result = 'yes' THEN 1 END) / COUNT(*)) * 100, 0), '%') AS `转化率`
FROM sales 
WHERE date > '2018-04-29' 
GROUP BY agent_id;

关键部分解释

让我拆解开每个新增列的逻辑:

  • 保存数:用CASE语句筛选出type='sales'且result='yes'的记录,符合条件返回1,否则返回NULL;COUNT()会自动忽略NULL值,所以得到的就是符合条件的记录总数。
  • 保存值总和:同样用CASE判断,符合条件时取value的值,否则取0;SUM()会把这些值加起来,得到目标总和。
  • 转化率:先计算保存数/呼叫数的比值,乘以100后用ROUND()取整,最后用CONCAT()拼接百分号%,得到你要的百分比格式。

验证结果

执行这个查询后,会得到和你预期完全一致的结果:

+----------+----------------+--------+--------------+--------+
| agent_id | Number of Calls | 保存数 | 保存值总和   | 转化率 |
+----------+----------------+--------+--------------+--------+
| 1        | 5              | 2      | 17.79        | 40%    |
| 2        | 3              | 1      | 11.11        | 33%    |
| 3        | 4              | 1      | 1.41         | 25%    |
+----------+----------------+--------+--------------+--------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:00