通过返回重复行进行分区

问题描述

假设我有一个天气表:

MONTH,DAY,LOW
6,1,67.47084426063374
6,2,66.90195288599919
6,3,62.16084275276963

我想选择一个月的平均低温,并尝试这样做:

SELECT t.* FROM (
    select p.month,avg(p.low) over (partition by p.month) avg_low
    from table p
) t;

平均正在工作,但是我得到了3条重复的记录。我如何才能返回单个记录?

(此外,当我尝试对这些round(avg(p.low),2)进行四舍五入时,我被告知“未在预期的位置找到FROM关键字”)

解决方法

我认为您只想聚合:

select p.month,avg(p.low) as avg_low
from table p
group by p.month
,
SELECT MONTH,ROUND(AVG(LOW),2) avg_low FROM  table  GROUP BY MONTH

就这样:)