Я выполняю запрос, подобный этому:
SELECT id FROM table
WHERE table.type IN (1, 2, 3)
LIMIT 15
Это возвращает случайную выборку.У меня может быть 7 предметов из class_1
и 3 предмета из class_2
.Я хотел бы вернуть ровно 5 элементов из каждого класса, и работает следующий код:
SELECT id FROM (
SELECT id, type FROM table WHERE type = 1 LIMIT 5
UNION
SELECT id, type FROM table WHERE type = 2 LIMIT 5
UNION ...
ORDER BY type ASC)
Это становится громоздким, если я хочу случайную выборку из десяти классов, а не только из трех.Каков наилучший способ сделать это?
(я использую Presto / Hive, поэтому любые советы для этих двигателей будут полезны).