MySQL中如何查询表内高频值并统计对应列总和实现排行榜
MySQL高频玩家金额统计实现方案
假设示例对应的表名为player_money,可直接使用以下SQL实现需求:
SELECT CONCAT(UPPER(LEFT(player, 1)), SUBSTRING(player, 2), ' has ', SUM(money), ' money') AS output_result FROM player_money GROUP BY player ORDER BY COUNT(*) DESC LIMIT 1;
逻辑说明
- 用
GROUP BY player对玩家ID分组,同时计算每个玩家的总金额 - 用
ORDER BY COUNT(*) DESC按玩家出现频次从高到低排序,第一位就是出现频次最高的取值 - 用
CONCAT函数直接拼接输出要求的字符串格式,其中UPPER(LEFT(player, 1))处理首字母大写,匹配输出示例的格式 - 如果存在多个玩家出现频次并列最高的情况,删除语句最后的
LIMIT 1即可输出所有符合条件的结果
扩展全量排行榜实现
如果需要输出所有玩家的金额排行榜,调整排序规则即可:
SELECT CONCAT(UPPER(LEFT(player, 1)), SUBSTRING(player, 2), ' has ', SUM(money), ' money') AS rank_result FROM player_money GROUP BY player ORDER BY SUM(money) DESC;
用你提供的示例数据运行核心语句,输出结果正好为Player001 has 260 money,符合预期。
内容的提问来源于stack exchange,提问作者Franky
相关产品推荐
相关产品推荐

