Запрос Calcite для выбора заданного процента данных из таблицы - PullRequest
0 голосов
/ 28 апреля 2020

Я ищу способ выбрать определенный процент данных из таблицы, используя запрос кальцита, например, скажем, у нас есть образец имени таблицы, который имеет около 800 записей, и я хочу выбрать только 30% от общего числа данные, присутствующие в выборке, т.е. в результате мы получаем только 240 записей из 800 записей.

Добавление к нему, если мы также можем использовать какие-либо критерии в описанной выше ситуации, будет дополнением.

Спасибо за авансовый.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Анализатор SQL Calcite поддерживает стандартное ключевое слово SQL TABLESAMPLE, например,

SELECT *
FROM t TABLESAMPLE BERNOULLI(30) REPEATABLE(42)

Но оно не задокументировано в Calcite SQL reference , и Я не пробовал это недавно. Попробуйте, и если это не сработает, пожалуйста, зарегистрируйте Calcite JIRA case .

0 голосов
/ 28 апреля 2020

Вы можете использовать оконные функции:

select t.*
from (select t.*, count(*) over () as cnt,
             row_number() over (order by rand()) as seqnum
      from t
     ) t
where seqnum <= 0.4 * cnt;
...