#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
Вот и все 🙂