BigQuery中的ROW_NUMBER()和数学函数

时间:2016-07-15 14:57:38

标签: sql google-bigquery

我找不到这个特定于BigQuery的答案。基本上我希望能够在查询中计算ROW_NUMBER,然后使用基本数学运算符(加,减等)修改行号,而不使用子查询。

我知道以下代码有效,但对我来说,似乎没有必要使用子查询来附加基本的数学运算符

SELECT
  id,
  title,
  language,
  rn+5
FROM
(
  SELECT
    id,
    title,
    language,
    ROW_NUMBER() OVER() AS rn
  FROM [publicdata:samples.wikipedia] LIMIT 1000
)

但是,当我尝试添加没有子查询的加号时,我收到错误

SELECT
  id,
  title,
  language,
  ROW_NUMBER() OVER() +5  AS rn_offset,
FROM [publicdata:samples.wikipedia] LIMIT 1000

我在没有子查询的情况下尝试在BigQuery中做什么,或者我的语法是错误的?

谢谢, Onji

1 个答案:

答案 0 :(得分:1)

这是BigQuery的遗留SQL的限制 - 如果不使用子选择,则无法组合各种计算。这很不幸,但此时不太可能改变。这只是许多人中的一个例子。

但是,您可以在没有子查询的standard SQL中执行此操作:

SELECT
  id,
  title,
  language,
  ROW_NUMBER() OVER() +5  AS rn_offset
FROM `publicdata.samples.wikipedia` LIMIT 1000

如果这样的限制在使用旧版SQL时烦人,我建议使用标准SQL。