【问题标题】:Select Top # in Presto SQL?在 Presto SQL 中选择 Top #?
【发布时间】:2016-10-06 15:24:19
【问题描述】:

Presto SQL 真的缺少 SELECT 语句中的 TOP X 功能吗?

如果是这样,在此期间是否有解决方法?

https://prestodb.io/

【问题讨论】:

  • 你的意思是 ORDER BY with LIMIT 吗?
  • 这其实是两个不同的东西。
  • 大多数时候,TOP N 的功能与 ORDER BY with LIMIT 的功能相同,但我正在一个边缘情况下工作,但它没有。那好吧。 ://
  • 您能描述一下 TOP X 函数的作用,或者您想要完成的任务吗?
  • 根据该帖子和该帖子中的所有链接文档,TOP 和 LIMIT 是相同的。你具体想做什么?

标签: sql presto


【解决方案1】:

如果你只是想限制结果集中的行数,可以使用LIMIT,带或不带ORDER BY

SELECT department, salary
FROM employees
ORDER BY salary DESC
LIMIT 10

如果您想要每个组的最高值,您可以使用标准 SQL row_number() 窗口函数。例如,要按工资获得每个部门的前 3 名员工:

SELECT department, salary
FROM (
  SELECT department, salary row_number() OVER (
    PARTITION BY department
    ORDER BY salary DESC) AS rn
  FROM employees
)
WHERE rn <= 3

【讨论】:

  • 对于其他所有人来说,这与我们在 Presto 中的距离一样接近。是的,这就是我最终要做的。使用 TOP N 使其查询更快、更易于阅读。我正在处理大量数据并试图避免内存限制。针对数据子集多次运行代码,然后将其重新聚合在一起。谢谢!
  • Ew。它吃了我漂亮的格式。哈哈!再次感谢大卫!
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
相关资源
最近更新 更多