SQL - Как применить ограничение на количество групп?

В Spanner у меня есть следующий запрос;

SELECT *
FROM Objects
WHERE EntityType = 0
GROUP BY EntityId
ORDER BY CreatedAt DESC
LIMIT 5

Этот запрос возвращает только 5 элементов в ответе. Но я не хочу 5 пунктов в результате. Я хотел получить 5 групп, созданных на основе EntityId. Итак, я хочу получить 5 групп под EntityId, чтобы иметь возможность разбивать их на страницы.

Предположим, что у меня есть следующая таблица: ;

Идентификатор объекта Тип объекта описание 1 0 фу 1 0 бар 1 0 foo2 2 0 бар2 1 0 foo3 3 0 бар3 2 0 foo4 2 0 бар4 ... ... ... .. .. .. . . .

Существует бесконечное количество EntityID, и в каждом EntityId будет различное количество строк.

У нас есть:

4 строки для EntityId 1, 3 строки для EntityId 2 и 1 строка для EntityId 3

В моем результате я хочу получить все строки для каждого EntityId сгруппированным образом. Итак, вот мои требования:

1 - он должен быть сгруппирован по EntityId

2 - он должен содержать все строки для созданных на EntityId в каждой группе

3 - я должен иметь возможность ограничить количество групп, скажем, 10 групп

4 - я должен иметь возможность разбивать EntityId на страницы

5 - я должен иметь возможность OrderBy EntityId

Он возвращается в результате, как следующая схема для меня:

Идентификатор объекта Тип объекта описание 3 0 бар3 2 0 бар2 2 0 foo4 2 0 бар4 1 0 фу 1 0 бар 1 0 foo2 1 0 foo3

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

NickW 25.10.2022 21:36

Основываясь на вашей таблице результатов, вы имеете в виду просто выбрать EntityIds и заказать их? Если нет, можете ли вы обновить свою таблицу результатов, чтобы показать фактический результат, которого вы хотите достичь?

NickW 25.10.2022 22:40

@NickW готово, сэр! Действительно, я хочу весь ряд. EntityId — это то, по чему я хочу их сгруппировать. Я хочу сгруппировать их по EntityId, и мне нужно 10 групп, независимо от того, сколько строк они содержат.

normativepcoder 26.10.2022 09:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Что-то вроде этого должно работать:

with EntList as (
  SELECT DISTINCT EntityId
  FROM Objects
  LIMIT 10
)
SELECT O.*
FROM EntList E
INNER JOIN Objects O on E.EntityId = O.EntityId
ORDER BY O.EntityId

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