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

如何使用Presto SQL计算列中指定值占比并按国家分组聚合

Presto 实现需求的SQL方案

实现分为两步:

  1. 先按国家和ID分组,计算每个ID对应的delete操作占比
  2. 再按国家分组聚合,统计唯一ID数量,以及每个ID delete占比的平均值

具体SQL如下:

WITH id_level_stats AS (
    SELECT 
        country,
        ID,
        -- 计算单ID下delete类型的占比,乘1.0避免整数除法
        COUNT_IF(type = 'delete') * 1.0 / COUNT(*) AS delete_ratio
    FROM 替换为你的实际表名
    GROUP BY country, ID
)
SELECT 
    country,
    COUNT(DISTINCT ID) AS ID_cnt,
    ROUND(AVG(delete_ratio), 2) AS delete_perc
FROM id_level_stats
GROUP BY country

逻辑说明

  • COUNT_IF是Presto原生的条件计数函数,比写CASE WHEN更简洁,功能是统计满足type = 'delete'的记录数
  • 乘以1.0是为了将整数运算转为浮点运算,避免整数除法得到0的错误结果
  • 如果不需要保留两位小数,去掉ROUND函数即可,调整第二个参数可以修改保留的小数位数

执行后得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:24:00