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

获取指定地图下击杀/死亡系数最高的Clan的SQL问题

解决SQL计算家族击杀/死亡系数的问题

嘿,我一眼就看出你遇到的问题啦!你写的SQL语句漏掉了关键的GROUP BY子句,这就导致数据库把所有符合map='map_1'条件的记录都合并成了一组来计算总和,自然只会返回一条错误的汇总结果,而不是每个家族各自的系数。

正确的SQL写法

SELECT 
  `clanid`, 
  SUM(kills)/NULLIF(SUM(deaths), 0) AS 'coef'
FROM `test_user_stats` 
WHERE `map`='map_1'
GROUP BY `clanid`  -- 这行是你之前缺失的核心!
ORDER BY `coef` DESC 
LIMIT 1;

关键部分解释

  • GROUP BY clanid:这一步是告诉数据库要按家族ID来分组统计,每个家族的击杀数和死亡数会单独汇总,而不是把所有家族的数据混在一起计算。
  • NULLIF(SUM(deaths), 0):额外加这个是为了避免某个家族的死亡数总和为0时出现除以0的报错情况——如果死亡数是0,NULLIF会返回NULL,对应的系数也会变成NULL,排序时这类结果会被排到最后,不会影响我们取最高系数的需求。
  • ORDER BY coef DESC + LIMIT 1:把计算出的系数从高到低排序,然后只取排名第一的那条结果,正好满足你要的“仅返回1条最高系数的家族记录”的需求。

验证逻辑

拿你给出的示例数据来说,正确执行后会分别计算clanid=2的系数(123/23≈5.347)和clanid=1的系数(23/32≈0.718),排序后会返回clanid=2和对应的系数,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:54:33