sql - 如何在 Redshift 中仅输出随机 xx% 的查询输出记录?
问题描述
当您不知道返回的记录数时,有没有办法只输出 Redshift 中输出记录总数的百分比?
假设查询的输出将是 1000 条记录。您只想随机选择其中的 60%...所以在这种情况下将是 600 条记录。
如果我知道输出始终是 1000,那么我会使用 LIMIT 600。但我不知道会返回多少条记录,我希望它是可变的..
有任何想法吗?
PS:尝试使用 LIMIT (0.6*COUNT(*)) 并没有用。错误是“LIMIT 不带变量”
解决方案
如果您不需要确切数量的记录但大约 60%,那么我建议:
where random() <= 0.6
如果您确实需要一个确切的数字,那么:
select t.*
from (select t.*,
row_number() over (order by random()) as seqnum,
count(*) over () as cnt
from t
) t
where seqnum <= 0.6 * cnt;
推荐阅读
- azure - 如何在 Azure Web 应用程序中设置静态私有 IP?
- html - 网格布局图像需要在没有高度和宽度的情况下进行设置
- javascript - SuiteScript 2.0 如何在创建模式下重定向到自定义记录?
- ios - 如何在 iOS 中获取默认系统颜色?
- r - 矩阵从字符向量中随机获取时将所有值更改为字符
- kendo-grid - 在重新加载/重定向时保存过滤器时,Kendo Grid 上的编辑按钮和导出到 Excel 按钮不起作用
- sql - 有没有办法从具有不同字段而不是 XML 数据类型字段的 PostgreSQL 表中获取 XML 格式的数据?
- reactjs - 无法在反应中获取系统环境变量
- python - 使用 pymysql 在 Python 3.7 中处理潜在的 sql 注入
- postgresql - 数据类型 point[] 没有访问方法“gist”的默认运算符类