【问题标题】:Positioning rows according to column values in SQL根据 SQL 中的列值定位行
【发布时间】:2014-01-27 01:11:33
【问题描述】:

我想根据特定的列值给出表格中的行位置。

例如:将包含学生姓名和分数的表中的数据插入到另一个表中,这将根据学生的分数自动在另一列中插入学生位置。需要注意的是,两个或多个具有相同分数的学生将共享一个位置。即如果有 3 名学生获得了 60,那么他们将拥有相同的位置。 我有一个包含学生姓名和分数的表格,我必须插入一个新表格,该表格也有职位列。

请协助我如何在 SQL 中实现这一点。

好的,假设我的表中有以下数据:

学生没有学生标记
6548 | 79
8762 | 60
6874 | 58
3876 | 70
3676 | 60

我想插入另一个表,如下所示:

学生编号 |学生标记 |职位
6548 | 79 | 1
3876 | 70 | 2
3676 | 60 | 3
8762 | 60 | 3
6874 | 58 | 4

【问题讨论】:

  • position 是指ranking
  • 你能给一些样本数据和样本期望的结果吗?最好有两个相等的排名。

标签: sql sql-server


【解决方案1】:

我们需要您现在拥有的表格布局或 SQL 语句来更好地帮助您,但 this 文档可能是您需要的东西。如果您需要更多帮助,请更新您的问题。

例子:

select name
, dense_rank() over (order by mark) position
from table
order
by position

【讨论】:

    【解决方案2】:

    我认为你的陈述应该是这样的:

    insert into Rank_Students(
     UserName,
     Mark, 
     Rank
    )
    select
     s.UserName,
     s.Mark,
     rank() over (order by s.Mark asc) as Position
    from Student
    ;
    

    如果你不想要排名,我认为你应该使用 Dense_Rank。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多