Как я могу разбить на страницы этот запрос BigQuery, используя число? - PullRequest
0 голосов
/ 06 марта 2019

Как можно обновить этот запрос BigQuery, чтобы учесть дополнительное предложение для разбивки на страницы?

SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber FROM prod.test LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
WHERE active = true 
AND rownumber BETWEEN 10000 AND 30000 

Полученная ошибка:

Нераспознанное имя: rownumber

Ответы [ 3 ]

1 голос
/ 06 марта 2019

Вы также можете использовать CTE

with cte as
(
 SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber 
 FROM prod.test LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
WHERE active = true
 ) select * from cte where rownumber BETWEEN 10000 AND 30000 

rownumber - это встроенный псевдоним, который напрямую не поддерживается в предложении where

1 голос
/ 06 марта 2019

Вы можете использовать это стандартное предложение sql, если bigquery поддерживает его,

SELECT 
       test.id
      ,test.city
FROM prod.test as test 
LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
    WHERE active = true
order by test.id
offset 10000 rows fetch next 20000 rows only
1 голос
/ 06 марта 2019

Для этого примера используйте подзапрос:

SELECT t.*
FROM (SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber
      FROM prod.test LEFT OUTER JOIN
           prod.locations location
           ON test.city = location.id
      WHERE active = true
     ) t 
WHERE rownumber BETWEEN 10000 AND 30000 ;

Однако вам, вероятно, следует использовать LIMIT и OFFSET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...