Допустим, у меня есть таблица, которая содержит два столбца:
Category Productname
Cat1 prod1
Cat1 prod2
Cat1 prod3
Cat1 prod4
Cat1 prod5
Cat2 prod6
Cat2 prod7
Cat2 prod8
Теперь, если я сделаю что-то вроде:
SELECT Category, collect_set(Productname)
FROM myTable;
Я бы получил что-то вроде:
Cat1 [prod1...prod5]
Cat2 [prod6...prod8]
Теперь в кошке 5 товаров, а в кошке 3. Однако я хочу ограничить количество товаров в каждой категории. Допустим, верхний предел равен 3. Три продукта могут быть любыми, если они принадлежат к одной категории. Также верхний предел может быть большим числом. Стоит отметить, что я хочу, чтобы collect_set остановился, как только он достиг верхнего порога. Поскольку генерация выходных данных, а затем выполнение фильтрации могут быть дорогостоящими. Также приветствуются методы, отличные от collect_set. Спасибо за любые предложения!