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

SQL中如何针对Class为2的行按No列执行Rank()排名

如何在SQL中基于列条件对指定行使用Rank()函数?

需求:仅对数据表中Class列值为2的行,根据No列的值进行排名;非Class=2的行,Rank字段留空。

原始数据表

NoNameClass
101reema2
102kriya1
103meena3
104carlin1
105dhiren2
106hiren2
107mahir3
108nishi1

期望结果表

NoNameClassRank
101reema21
102kriya1
103meena3
104carlin1
105dhiren22
106hiren23
107mahir3
108nishi1

解决方案

可以通过CASE语句结合窗口函数RANK()实现需求,SQL语句如下:

SELECT 
    No,
    Name,
    Class,
    CASE 
        WHEN Class = 2 THEN RANK() OVER (PARTITION BY Class ORDER BY No)
        ELSE NULL
    END AS Rank
FROM your_table_name;

逻辑说明

  1. RANK() OVER (PARTITION BY Class ORDER BY No)会按Class分组,在每组内对行按No升序计算排名;
  2. CASE语句判断当前行Class是否为2:
    • 符合条件时返回计算出的排名;
    • 不符合条件时返回NULL,对应结果中的空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:25:16