У меня есть таблица t1 с двумя int-полями (id, month), и я заполнил ее некоторыми значениями. То, что я хотел бы видеть как выход, - максимум (количество id в месяц). Я попытался следующий код и он работает отлично:раздел по количеству полей
select id,max(freq) as maxfreq from
(select id,month,count(*) as freq
from t1
group by id,month) a
group by id
order by maxfreq desc
Результат:
ID MAXFREQ
1 3
2 3
3 1
4 1
Это нормально. Как добиться этого, используя предложение over partition by? И какой из них более эффективен? На самом деле моя таблица состоит из нескольких тысяч записей. Так что сделать подзапрос не будет хорошей идеей, я думаю! Спасибо за любую помощь. Вот the fiddle
Покажите нам свою структуру таблицы с некоторыми данными образца – Raj
@Raj вы можете найти ее в скрипке. –
вы не можете использовать over-clause при работе с групповой функцией агрегации –