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

如何完善SQL语句以计算数据表的月度最大值、最小值及平均值

解决方案

可以用条件聚合函数实现需求,在按name和month分组后,针对不同data_type分别计算对应统计值:

SELECT
    name,
    month,
    -- 月度最大值:取data_type为'max'的data_value的最大值
    MAX(CASE WHEN data_type = 'max' THEN data_value END) AS monthly_max,
    -- 月度最小值:取data_type为'min'的data_value的最小值
    MIN(CASE WHEN data_type = 'min' THEN data_value END) AS monthly_min,
    -- 月度平均值:计算data_type为'avg'的data_value的平均值
    AVG(CASE WHEN data_type = 'avg' THEN data_value END) AS monthly_avg
FROM
    your_table_name -- 替换为你的实际表名
GROUP BY
    name,
    month;

逻辑说明

  • 针对data_type='max'的记录,用MAX()函数提取最大值,得到月度最大值;
  • 针对data_type='min'的记录,用MIN()函数提取最小值,得到月度最小值;
  • 针对data_type='avg'的所有记录,用AVG()函数直接计算平均值,得到月度平均值。

可选简化写法(部分数据库支持)

如果使用PostgreSQL、Redshift等支持FILTER子句的数据库,可简化为更易读的写法:

SELECT
    name,
    month,
    MAX(data_value) FILTER (WHERE data_type = 'max') AS monthly_max,
    MIN(data_value) FILTER (WHERE data_type = 'min') AS monthly_min,
    AVG(data_value) FILTER (WHERE data_type = 'avg') AS monthly_avg
FROM
    your_table_name
GROUP BY
    name,
    month;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:45