【问题标题】:partition by returns duplicate rowspartition by 返回重复的行
【发布时间】:2020-12-02 13:46:50
【问题描述】:

假设我有一个天气表:

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 关键字”)

【问题讨论】:

  • 你在avg_low后面加了一个逗号,请去掉。

标签: sql oracle aggregate-functions window-functions


【解决方案1】:

我认为你只是想要聚合:

select p.month, avg(p.low) as avg_low
from table p
group by p.month

【讨论】:

    【解决方案2】:
    SELECT MONTH,ROUND(AVG(LOW),2) avg_low FROM  table  GROUP BY MONTH
    

    就是这样:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多