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

Oracle SQL如何按centile分组并计算其他列的总和与平均值

Oracle按概率划分分位的统计查询方案

你可以使用Oracle的NTILE窗口函数实现需求,以下是适配你场景的单条查询:

如果是你示例的四分位场景,SQL如下:

WITH ranked_data AS (
    SELECT
        Score,
        Probability,
        NTILE(4) OVER (ORDER BY Probability DESC) AS quartile
    FROM your_table -- 替换为实际表名
)
SELECT
    quartile,
    COUNT(*) AS Sum_observations,
    SUM(Score) AS Sum_score,
    ROUND(AVG(Probability), 2) AS Avg_probability -- 保留2位小数和示例格式对齐
FROM ranked_data
GROUP BY quartile
ORDER BY quartile ASC;

如果需要按百分位(centile)分组,仅需要做两处修改:

  • 将NTILE(4)的参数改为100,即NTILE(100)
  • 将输出的字段名quartile改为centile即可

说明

  • 窗口函数中指定ORDER BY Probability DESC是为了和你示例的分位排序逻辑对齐:概率最高的组排在第1位,概率最低的组排在最后一位,如果需要反过来调整排序方向即可
  • 如果你的数据量无法被分位数量整除,NTILE会自动将多余的条目均匀分配给靠前的分位,属于标准的分位划分逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:24:03