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

如何按MeasID分区计算列中前10条数据的平均值?

解决方案

你提到的ntile()确实不适合这个场景,因为它是将分区内的数据均分成指定数量的组,无法精准取固定条数的前N条。正确的做法是使用ROW_NUMBER()窗口函数来标记每个MeasID分区内的记录顺序,再筛选前10条计算平均值。

假设你的源表名为your_table,创建视图的SQL代码如下:

CREATE VIEW vw_measid_top10_variable_avg AS
SELECT
    MeasID,
    AVG(Variable) AS top10_variable_average
FROM (
    SELECT
        MeasID,
        Variable,
        -- 按MeasID分区,替换<排序字段>为你需要的排序依据(比如测量时间、Variable值等)
        ROW_NUMBER() OVER (PARTITION BY MeasID ORDER BY <排序字段>) AS row_num
    FROM your_table
) ranked_data
WHERE row_num <= 10
GROUP BY MeasID;

说明:

  • 内层子查询通过ROW_NUMBER()给每个MeasID下的记录按指定顺序编号,确保能精准定位前10条
  • 外层查询筛选编号≤10的记录,再按MeasID分组计算对应Variable的平均值
  • 如果某个MeasID下的记录不足10条,会自动计算现有所有记录的平均值,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:05:21