Ограничение результата 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
);