当前位置: 首页 > 面试题库 >

SQL:枚举每个组中返回的行

周奇文
2023-03-14
问题内容

假设我有一个SELECT ...返回sth的查询。像这样:

role      name
--------  -------
MANAGER   Alice
WORKER    Bob
WORKER    Evan
WORKER    John
MANAGER   Max
WORKER    Steve

是否可以添加另一列来枚举每个组中的行(即,枚举具有其他角色的经理,工人和人员,而不考虑其他角色)?像这样:

role      name     no.
--------  -------  ----
MANAGER   Alice     1
WORKER    Bob       1        // second row, but the first worker
WORKER    Evan      2
WORKER    John      3
MANAGER   Max       2        // fifth row, but only the second manager
WORKER    Steve     4

使用Oracle扩展很好。


问题答案:

使用窗口功能:

select role, name, 
       row_number() over (partition by role order by name) as rn
from the_table
order by name;


 类似资料:
  • 问题内容: 我想知道是否有可能枚举返回的行。不根据任何列的内容,而只是产生一个连续的整数索引。例如 将返回一些内容: 它用于https://data.stackexchange.com/ 问题答案: 尝试:

  • 我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举: 现在我想要能够键入类似的内容:

  • 问题内容: 我想声明一个枚举Direction,它具有一个返回相反方向的方法(以下语法不正确,即,不能实例化枚举,但它说明了我的观点)。这在Java中可行吗? 这是代码: 问题答案: 对于那些按标题吸引的人:是的,您可以在枚举中定义自己的方法。如果您想知道如何调用这种非静态方法,则可以使用与其他任何非静态方法相同的方法- 在定义或继承该方法的类型实例上调用它。如果是枚举,则此类实例仅为s。 因此,

  • 我想编写一个返回枚举数的方法(类似于返回的枚举数),该方法连续返回文件的每一行,但会被占用。我的第一个方法是 这似乎是有效的,但是如果我理解正确(如果我错了,请纠正我),文件将作为一个整体进入内存,以便应用。

  • 问题内容: 是否可以在Java中定义类似的内容? C#代码: 例如,如果设置为then,结果将为: 我想实现类似的东西!Java有可能吗? 问题答案: 好吧,您 几乎 可以做到: 然后: 在某些情况下,这可能很有用,但是正如Michael所说,您绝对应该考虑一般的“值集”选项。 如果 确实 决定使用带值的枚举,则可以在枚举本身内放入额外的逻辑: