在 Amazon Athena 中按索引选择行

Ajj*_*nan 5 sql presto amazon-athena

这是一个非常简单的问题,但我似乎无法找到有关它的文档。如何按索引查询行(即选择表中的第 10 行到第 20 行)?

我知道有一个row_numbers功能,但它似乎没有做我想要的。

Ajj*_*nan 5

我似乎在 Athena 中找到了一种迂回且笨拙的方法,因此欢迎任何更好的答案。这种方法要求您的表中已经有一些数字列,在本例中名为some_numeric_column

SELECT some_numeric_column, row_num FROM (
  SELECT some_numeric_column,
row_number() over (order by some_numeric_column) as row_num
FROM your_table 
  )
  WHERE row_num between 100000 and 100010
Run Code Online (Sandbox Code Playgroud)

解释一下,您首先在数据中选择一些数字列,然后根据所选数字列的顺序创建行号列(称为 row_num)。然后,您将所有内容包装在 select 调用中,因为 Athena 不支持在单个调用中创建 row_num 列,然后对其进行调节。如果您不将其包装在第二次SELECT调用中,Athena 将抛出一些有关未找到名为 的列的错误row_num


wos*_*tom 5

不要指定任何分区,因此您的行号将是 1 和您的记录数之间的整数。

SELECT  row_num FROM (
  SELECT row_number() over () as row_num
FROM your_table 
  )
  WHERE row_num between 100000 and 100010
Run Code Online (Sandbox Code Playgroud)