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

SQL实现多分组内按指定字段排序排名的优化方法

优化实现方案

你可以直接用窗口函数自带的PARTITION BY语法实现分组内排名,不需要拆分分组再UNION合并,代码如下:

SELECT 
  *, 
  RANK() OVER (
    PARTITION BY Division 
    ORDER BY Wins DESC
  ) AS `Rank`
FROM Teams;

方案说明

  • PARTITION BY Division 会自动将所有数据按Division字段的值划分为独立的分组,后续新增Division也不需要修改SQL逻辑
  • 每个分组内单独按Wins降序计算排名,和你原来的计算规则完全一致
  • 整个查询只需要扫描一次表,相比多次扫表再UNION的方案性能提升明显

可选排名规则调整

如果业务场景需要调整排名逻辑,可以替换RANK()为其他窗口函数:

  • 用DENSE_RANK():同值排名相同,后续排名不跳号(比如两个第1名之后是第2名,不是第3名)
  • 用ROW_NUMBER():同值也会分配不同的连续排名,不会出现重复名次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:21:01