在Amazon Athena中按索引选择行

时间:2018-06-28 19:59:07

标签: sql amazon-athena presto

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

我知道有一个row_numbers函数,但是它似乎并没有满足我的要求。

2 个答案:

答案 0 :(得分:1)

请勿指定任何分区,因此您的行号将是1到记录数之间的整数。

SELECT  row_num FROM (
  SELECT row_number() over () as row_num
FROM your_table 
  )
  WHERE row_num between 100000 and 100010

答案 1 :(得分:0)

我似乎在雅典娜找到了一种绕行而笨拙的方式,因此欢迎任何更好的答案。这种方法要求您的表中已经有一些数字列,在本例中为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

为说明起见,您首先要在数据中选择一些数字列,然后根据所选数字列的顺序创建一个行号列(称为row_num)。然后将所有内容包装在一个select调用中,因为Athena不支持在单个调用中创建row_num列,然后对其进行条件化。如果您不将其包装在第二个SELECT调用中,那么Athena会吐出一些有关找不到名为row_num的列的错误。