В большом запросе мы можем ограничить количество строк в группе на

у меня такие данные

если я применяю этот запрос, я получаю вот так.

Запрос :: SELECT id, ARRAY_AGG(year) grouped_year FROM yourtable GROUP BY id

Но я хочу ограничить количество строк в группе вот так. Например, здесь их 5.

возможно ли в bigquery получить такой вывод.

вы можете использовать ARRAY_AGG(year LIMIT 5).

Jaytiger 03.04.2023 17:06

но мне нужны еще 5 в следующем ряду, как в примере выше –

naveen 03.04.2023 17:20

Мне жаль, что я также пропустил ваши требования. В этом случае ответ Тима кажется наиболее подходящим для вашей проблемы.

Jaytiger 03.04.2023 17:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы можем использовать 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 03.04.2023 17:15

@naveen Извините, я пропустил эту часть вашего требования. ROW_NUMBER все еще можно использовать.

Tim Biegeleisen 03.04.2023 17:19

Другие вопросы по теме