у меня такие данные
если я применяю этот запрос, я получаю вот так.
Запрос :: SELECT id, ARRAY_AGG(year) grouped_year FROM yourtable GROUP BY id
Но я хочу ограничить количество строк в группе вот так. Например, здесь их 5.
возможно ли в bigquery получить такой вывод.
но мне нужны еще 5 в следующем ряду, как в примере выше –
Мне жаль, что я также пропустил ваши требования. В этом случае ответ Тима кажется наиболее подходящим для вашей проблемы.
Мы можем использовать ROW_NUMBER()
, чтобы ограничить количество записей от каждого id
максимум до 5:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY year) - 1 AS rn
FROM yourTable
)
SELECT id, ARRAY_AGG(year) grouped_year
FROM cte
GROUP BY id, FLOOR(rn / 5);
Обратите внимание, что вы можете использовать любой столбец из своей таблицы, чтобы определить, какие 5 записей сохраняются для каждого id
.
но мне нужны другие 5 также в следующем ряду, как в приведенном выше примере
@naveen Извините, я пропустил эту часть вашего требования. ROW_NUMBER
все еще можно использовать.
вы можете использовать
ARRAY_AGG(year LIMIT 5)
.