Ограничение результата SQL с запросом

Я пытаюсь распечатать результаты таблицы на основе вывода, сгенерированного другой таблицей.

Итак, скажем, моя таблица II выдает целочисленный вывод некоторого значения, тогда я хочу использовать это значение, чтобы ограничить мои результаты для таблицы I.

Я не могу заставить этот запрос работать. Я написал это, но не вижу проблемы. Есть ли другой способ написать это?

Я где-то читал на SO, что подзапрос в лимите не разрешен, но я не уверен.

      select * 
from stage_II_final_suzuki_1648155456      `  
limit ( select count(*)*0.80 
        from tmp.stage_II_final_suzuki_1648155456
      );

Я хочу исправить синтаксис для компилятора

ОШИБКА> Ошибка проверки Синтаксическая ошибка: Неожиданный "(" в [31:11]

1 ответ

Похоже, что Google Ads Data Hub использует BigQuery SQL. Синтаксис LIMIT принимает число (литеральную константу); вы не можете использовать любое выражение, которое требует вычисления. Однако он поддерживает функцию ROW_NUMBER(), и вы можете попробовать:

      select *
from (
   select s1.*, row_number() over() as rn
   from stage_II_final_suzuki_1648155456 s1     `  
   ) s2
where  s2.rn <= ( select count(*)*0.80 
                  from tmp.stage_II_final_suzuki_1648155456
                 );
Другие вопросы по тегам