You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用表统计总数实现Presto SQL动态抽样?

Presto表抽样查询修正

原查询存在几处语法逻辑问题:

  • CTE定义重复使用WITH关键字,正确写法是仅开头写一次,后续子句用逗号分隔
  • counts_less_100的定义缺少包裹查询语句的括号
  • TABLESAMPLE BERNOULLI的参数无法直接引用CTE的行结果,需要先将比例计算为标量值

修正后的查询如下:

WITH 
total_count AS (SELECT COUNT(*) AS total FROM "Table A"),
less_100_count AS (SELECT COUNT(*) AS less_count FROM "Table A" WHERE my_total < 100),
sample_ratio AS (SELECT (less_count * 100.0 / total) AS ratio FROM less_100_count, total_count)
SELECT * 
FROM "Table A" 
WHERE my_total > 100
TABLESAMPLE BERNOULLI ((SELECT ratio FROM sample_ratio))

关键说明:

  1. 先通过total_count和less_100_count分别计算表A总记录数、my_total<100的记录数
  2. sample_ratio将占比转换为BERNOULLI抽样所需的百分比格式(乘以100.0确保浮点运算精度)
  3. 最后对my_total>100的数据集执行抽样,通过标量子查询获取动态计算的抽样比例

内容的提问来源于stack exchange,提问作者CodeGeek123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:45:49