【问题标题】:How can I Rank() the value of a column based on如何排名()基于列的值
【发布时间】:2022-11-02 07:46:01
【问题描述】:

在 SQL 中,如何根据另一列的条件根据列上的值进行 rank()?

我有一张这样的桌子。如果Class is 2,我如何根据“否”的值进行排名?

来源是:

No Name Class
101 reema 2
102 kriya 1
103 meena 3
104 carlin 1
105 dhiren 2
106 hiren 2
107 mahir 3
108 nishi 1

结果

No Name Class Rank
101 reema 2 1
102 kriya 1
103 meena 3
104 carlin 1
105 dhiren 2 2
106 hiren 2 3
107 mahir 3
108 nishi 1

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用row_number()partition by class 对每个班级的学生进行排名。

    要忽略您不感兴趣的类,case 表达式会派上用场:

    select t.*,
        case when class = 2 then row_number() over(partition by class order by no) end as rnk
    from mytable t
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 2019-12-31
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多