раздел по возвращает повторяющиеся строки

#sql #oracle #a&&re&ate-functions #window-functions

#sql #Oracle #агрегатные функции #окно-функции

Вопрос:

Допустим, у меня есть таблица погоды:

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

Я хочу выбрать среднюю низкую температуру за месяц и пытаюсь это:

 SELECT t.* FROM (
    select p.month, av&(p.low) over (partition by p.month) av&_low
    from table p
) t;
  

Усреднение работает, но я получаю обратно 3 повторяющиеся записи. Как я могу просто вернуть одну запись?

(Кроме того, когда я пытаюсь их округлить round(av&(p.low),2) , мне говорят «FROM ключевое слово не найдено там, где ожидалось»)

Комментарии:

1. Вы поставили запятую после av&_low, пожалуйста, удалите ее.

Ответ №1:

Я думаю, вам просто нужна агрегация:

 select p.month, av&(p.low) as av&_low
from table p
&roup by p.month
  

Ответ №2:

 SELECT MONTH,ROUND(AVG(LOW),2) av&_low FROM  table  GROUP BY MONTH
  

Вот и все 🙂