当前位置: 首页 > 知识库问答 >
问题:

使用多列“排序依据”标准,根据顺序对结果进行排序和编号

裴英锐
2023-03-14

全部的

我一直在尝试这样做,数据结构如下:

╔══════════════╦═══════════╦══╗
║ Alphabetical ║ Numerical ║  ║
╠══════════════╬═══════════╬══╣
║ A            ║        15 ║  ║
║ A            ║        30 ║  ║
║ E            ║       100 ║  ║
║ C            ║        45 ║  ║
║ F            ║        25 ║  ║
║ C            ║        65 ║  ║
║ B            ║        25 ║  ║
║ F            ║        35 ║  ║
║ C            ║       100 ║  ║
║ A            ║        10 ║  ║
║ C            ║        20 ║  ║
║ B            ║         5 ║  ║
║ E            ║        10 ║  ║
║ F            ║        85 ║  ║
║ D            ║        30 ║  ║
║ F            ║         1 ║  ║
╚══════════════╩═══════════╩══╝

要获得以下内容:

╔══════════════╦══════╦═════════╗
║ Alphabetical ║ Rank ║ Numeric ║
╠══════════════╬══════╬═════════╣
║ A            ║    1 ║      30 ║
║ A            ║    2 ║      15 ║
║ A            ║    3 ║      10 ║
║ B            ║    1 ║      25 ║
║ B            ║    2 ║       5 ║
║ C            ║    1 ║     100 ║
║ C            ║    2 ║      65 ║
║ C            ║    3 ║      45 ║
║ C            ║    4 ║      20 ║
║ D            ║    1 ║      30 ║
║ E            ║    1 ║     100 ║
║ E            ║    2 ║      10 ║
║ F            ║    1 ║      85 ║
║ F            ║    2 ║      35 ║
║ F            ║    3 ║      25 ║
║ F            ║    4 ║       1 ║
╚══════════════╩══════╩═════════╝

基本上,按升序排列字母字段,按降序排列数字字段,并通过使用按字母字段分组的数字字段的顺序来获得顺序或排名。

仅当我将其限制为字母列中的一个特定值时,我才实现了它,方法如下:

select ordered_src.*, ROWNUM Rank from (select src.* from Source src where alphabetical = 'A' order by Numeric desc) ordered_src;

但我不知道如何得到上面显示的结果。知道吗?还有,有没有其他方法也适用于mysql/mssql/etc?

谢谢

共有1个答案

通俊发
2023-03-14

使用行号()

select s.*,
       row_number() over (partition by alphabetical order by numerical desc) as rank
from source s
order by alphabetical, rank;
 类似资料:
  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我有多个数组,我想根据其中一个的排序顺序对所有数组进行排序,如下所示: 我希望函数执行后,数组将如下所示: 问题答案: 您可以执行以下操作:首先根据键控数组的索引的索引对它们进行索引的值对它们进行排序,然后使用: 如果要在任何类型的集合上使它通用(但仍以与std lib集合算法相同的样式返回数组): 以及带有自定义比较器的版本:

  • 我有多个数组,我想根据其中一个数组的排序顺序对所有数组进行排序,如下所示: 我预计函数执行后的数组将如下所示:

  • 我目前有一个应用程序,可以显示1.5公里半径内附近的医院,它看起来是这样的: 我遇到的麻烦是,我不知道如何根据他们从最低到最高的计算距离来排序卡片。 我创建了一个来存储计算的距离列表,并用对其进行排序。 我如何确保小部件将遵循排序的距离值的顺序?

  • 问题内容: 我有一个对象的ArrayList。该对象包含属性和。所以我想对上的对象进行排序,对于同一日期的所有对象,我想对其进行排序。我怎样才能做到这一点? 问题答案: 实施自定义,然后使用。它可能看起来像这样:

  • 问题内容: 我需要发送查询以检索具有特定字符组的值,如下所示: 假设我对“ XX”感兴趣,因此它应该搜索其值以“ XX”开头或具有“ XX”(空格XX)的任何字段。例如,并且是有效的结果。 我有以下查询, 返回正确的结果,但我需要对它们进行排序 ,使其首先返回开头的内容,然后返回其他结果。如下: 码 问题答案: 使用JPQL(HQL) : 有条件 有了很多麻烦。首先,您必须在子句中使用本机SQL