【发布时间】:2019-10-04 00:56:14
【问题描述】:
我正在运行这样的查询:
SELECT id FROM table
WHERE table.type IN (1, 2, 3)
LIMIT 15
这将返回随机抽样。我可能有来自class_1 的 7 个项目和来自class_2 的 3 个项目。我想从每个类中准确返回 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)
如果我想从 10 个类中随机抽样,而不是只从 3 个类中随机抽样,这将变得笨拙。做这个的最好方式是什么?
(我正在使用 Presto/Hive,因此对于这些引擎的任何提示将不胜感激)。
【问题讨论】:
-
使用
LIMIT而不使用ORDER BY意义不大。 -
@TheImpaler 你说得对,这只是随机抽样。试图使它尽可能简单的例子