小编mlh*_*351的帖子

在SQL查询Redshift中使用动态LIMIT

我有一个Redshift和Netezza查询,COUNT(*)每当我运行它时会增长,因为大多数表附加了更多销售等的行.无论如何,我正在寻找价格最高的20%,所以我正在使用ORDER BY price,然后更改限制通过做心理数学得到前20%,即如果COUNT(*)=10,000,那么我将添加一个静态LIMIT 2000.明天,也许它会是12,000行,然后我需要运行COUNT(*)LIMIT 2400再次更改.这显然是不可扩展的.

我正在尝试编辑查询以包含动态限制,查找前20%并在百分比之间轻松更改:5%,10%等等.因此无论行数如何,我都会获得一致的结果.

以下示例查询:

SELECT
 * 
FROM orders
WHERE
 sale_date >= '2018-01-01'
ORDER BY 
 price DESC
LIMIT 2000
Run Code Online (Sandbox Code Playgroud)

我想要有更像的东西:

SELECT
 * 
FROM orders
WHERE
 sale_date >= '2018-01-01'
ORDER BY 
 price DESC
LIMIT (SELECT COUNT(*) * 0.2 FROM orders)
Run Code Online (Sandbox Code Playgroud)

不确定Redshift/Netezza是否支持此功能.我已经看到了一个StackOverflow问题,它可以在MySQL中使用变量函数,但我在Redshift和Netezza工作.任何人对如何创建这个有什么想法?谢谢!

sql sql-order-by limit netezza amazon-redshift

1
推荐指数
1
解决办法
620
查看次数

标签 统计

amazon-redshift ×1

limit ×1

netezza ×1

sql ×1

sql-order-by ×1